Wpis z mikrobloga

#webdev #jquery #pytaniedoeksperta
Mam problem ze scrollem. Robię dodatke do mirko i automatycznie prependuję nowe wpisy na górę. Gdy
$(window).scrollTop() > 0 to wtedy widok dla użytkownika nie może się przesuwać, prawie sobie poradziłem z tym: https://greasyfork.org/en/scripts/9892-mirko-live/code

problem w tym, że czasem ajaxem dostaję listę więcej jak jednego wpisu na raz z dwoma obrazkami. I wtedy dzieją się cuda.
Pozycję scrolla obliczam dwa razy, pierwszy raz po dodaniu wpisu, drugi raz po załadowaniu się obrazka w tym wpisie. Ale jak są dwa obrazki to nie wiem co się dzieje. Ma być tak:
- dostaję listę 2 wpisów (każdy z obrazkiem)
- prependuję listę, sprawdzam outerHeight() i przesuwam o tyle scrolla w dół
- niezależnie ładują się dwa obrazki, dla każdego sprawdzam czy załadowany i jeżeli tak to przesuwam scrolla w dół o wysokość obrazka

a mam tak:

var list = $($(data.html).html());
$d = list.prependTo($el);
$e = $d.find('div.media-content > a > img'); // ???
$d.find('div.media-content > a > img').hide();

var t = $(window).scrollTop();
var h = $d.outerHeight();

if (t){
       $(window).scrollTop(t + h + 1);

       $($e).one('load', function () {
                console.log("dumP!");
                $e.show();
        var imgHeight = $(this).outerHeight();
        var dm = $(window).scrollTop();
        if (dm){
                $(window).scrollTop(dm + $d.outerHeight() - h);
                }
       });
} else {
       $e.show();
}

aby zasymulować sytuację, gdzie dostajemy 2 obrazki na raz wystarczy zmienić w kodzie https://greasyfork.org/en/scripts/9892-mirko-live/code interwał **interwal_ms** na np. 10 sekund i wtedy powinien wystąpić opisywany problem.
  • 2
@macza: .resize() nie działa na nic, oprócz $(window).resize()
(przynajmniej u mnie)

kombinowałem z dodawaniem nowych obrazków do tablicy, potem .each() po załadowaniu każdego liczyć wysokość, ale coś mi nie wychodziło