tokuhirom's Blog

無限にのびるページのつくりかた

こうする。window.scroll イベントの中で直接やるやつは死ねばいいって jresig がいってたので、そうしてません。まだ死にたくないから。

FrePAN に導入してあるんだけど、もっといいやりかたあったらおしえてください。

        var page = 1;
        var didScroll = false;
        var in_request = false;
        var finished = false;

        $(window).scroll(function () {
            didScroll = true;
        });
        setInterval(function () {
            if (didScroll) {
                var remain = $(document).height() - $(document).scrollTop() - $(window).height()
                if (remain < 500 && in_request==false && !finished) {
                    in_request = true;
                    $.ajax({
                        type: 'get',
                        cache: false,
                        data: { page: ++page },
                        url: location.href,
                        success: function (html) {
                            in_request = false;
                            var elements = $('.modules li', html);
                            if (elements.length == 0) {
                                finished = true;
                            }
                            $('.modules').append( elements );
                            $('html,body').animate({scrollTop: $(window).scrollTop() + 10 + 'px'}, 800, function () { in_request=false; });
                        },
                        error: function () { /* nop */ }
                    });
                }
                didScroll = false;
            }
        }, 250);