1

ユーザーがページの一番下までスクロールすると、別のサイトの画像リンクをスクレイピングする PHP スクリプトから HTML で動的に読み込まれるページがあります。問題は、スクリプトが完了するまでに時間がかかり、ユーザーがページの一番下までスクロールしたことを検出する機能が数回トリガーされ、HTML が数回読み込まれて画像のセットが重複することです。関数を再度実行させる前に、HTML がロードされるまで JavaScript を待機させる簡単な方法はありますか? 検出/ロード スクリプトは次のようになります。

$(window).scroll(function() {
    if ($(window).scrollTop() >= $(document).height() - $(window).height() - 10) {
        //alert("at the bottom.");
        $.post("function.php", function(data) {
            $('#wrap').append(data);
            });
    }
});

ありがとう!

4

3 に答える 3

3
var loadAgain = true;
$(window).scroll(function() {
    if (loadAgain && $(window).scrollTop() >= $(document).height() - $(window).height() - 10) {
        loadAgain = false;
        //alert("at the bottom.");
        $.post("function.php", function(data) {
            $('#wrap').append(data);
            loadAgain = true;
        });
    }
});
于 2012-07-05T21:25:45.777 に答える
2

ブール値のステータスを設定して、イベントが完了するまで複数回発生しないようにします。このような:

    var loading = false;
    if ($(window).scrollTop() >= $(document).height() - $(window).height() - 10) {
        if (!loading) { 
            loading = true;
            $.post("function.php", function () {
                loading = false;
            })
        }
    }
于 2012-07-05T21:25:46.660 に答える
0

これを試して:

var loadFinished = true;
$(window).scroll(function() {
    if (loadFinished && ($(window).scrollTop() >= $(document).height() - $(window).height() - 10)) {
        //alert("at the bottom.");
        loadFinished = false;
        $.post("function.php", function(data) {
            $('#wrap').append(data);
            loadFinished = true;
        });
    }
});
于 2012-07-05T21:25:04.183 に答える