私は最新のJQueryを使用しています。問題は、ユーザーがあまりにも速くスクロールしてスクリプトが2回連続して発生した場合です。ユーザーが通常の速度または非常にゆっくりとスクロールすると、スクリプトは正常に動作します。私はページの下部にjsを持っています。関数を呼び出すときにタイムアウトを追加しましたが、タイムアウトを待ってからスクリプトを2回繰り返すだけです。繰り返すことはいつも起こるわけではありません。スクロールの高さの-10pxで関数を呼び出す設定があります。また、ロード中のgifをロードしようとしても、gifのロードが遅れても動作していないようです。これが起こらないようにする方法はありますか?カスタム無限スクロールスクリプトでJQueryスクリプトが繰り返されないようにする方法
<body>
<div class="contentholderwrap"></div>
<div id="dataresult"></div>
</body>
<script type="text/javascript">
$(document).ready(function(){
function lastPostFunc(){
var endid = $(".contentholderwrap:last").attr("id");
if (endid != "1000000000000") {
$.post("main.php?lastid="+$(".contentholderwrap:last").attr("id"), function(data) {
if (data != ""){
$(".contentholderwrap:last").after(data);
}
$('#dataresult').empty();
});
}
};
$(window).scroll(function(){
if ($(window).scrollTop() >= $(document).height() - $(window).height() -10){
setTimeout(lastPostFunc, 500);
}
});
});
</script>
さて、この停止はスクロール全部。下にスクロールすると、何も起こりません。 FirefoxでFirebugを使用してデバッグしましたが、エラーは発生していません。 – Patriotec
最初の変更(タイムアウト)または2回目の変更(ajax)を使用しましたか?更新されたコードのコピーを、http://jsbin.comやhttp://jsfiddle.netなどのどこかに表示することができますか? – nnnnnn
lastpost関数の最後に、)がありました。スクロールすると、タイマーの遅延が無視されます。関数をすぐに呼び出すscroll関数でfunction()を使用しました。 ()を削除すると、関数は呼び出されません。だから私は遅れていないと思いますか? – Patriotec