0

.scrollTop()に問題があります

アンロード時にセッション内の現在のscrollTop()の位置を保存するページがあります。私の目標は、このページに戻ると、最後のscrollTopの位置までページがスクロールすることです。

私のJSコードは単純です:

console.log('=>'+parseInt(scrollto)+' '+parseInt($(window).scrollTop())); 
$(window).scrollTop(scrollto);
console.log('=>'+parseInt(scrollto)+' '+parseInt($(window).scrollTop()));

ブラウザのコンソールに表示されます:

=> 2500 0
=> 2500 2500

わかりました。私のページは正確な最後の位置でスクロールされます。

この問題には、scrollto変数の大きな値が伴います。これは私がコンソールに持っているものです:

=> 12352 0
=> 12352 7683

要求された位置でスクロールしない理由がわかりません

私もこれを試しました:

var max_times= 10;

for(var i=0;i<max_times;i++){
console.log('=>'+parseInt(scrollto)+' '+parseInt($(window).scrollTop()));
if (parseInt(scrollto) > parseInt($(window).scrollTop())) 
    $(window).scrollTop(scrollto);
}

そして結果:

=> 13450 0
=> 13450 7985
=> 13450 7985
=> 13450 7985
...
=> 13450 7985

他の情報 :

  • ChromeとSafariでも同じ結果が得られます。
  • 私が話しているページにはたくさんの画像が含まれているので、完全に読み込まれるまでに少し時間がかかります。

助けていただければ幸いです。

ありがとうございました。

4

2 に答える 2

0

Ok。

私はうまくいく解決策を見つけました。

ヒントをありがとうございます。ページの高さ全体を含める必要がありました。

私がやったことはそれです:

var timer = setInterval(function(){
    if ((parseInt(scrollto) > parseInt($(window).scrollTop())) && (parseInt($(document).height())>parseInt(scrollto))){
       $(window).scrollTop(scrollto);
       if ($(window).scrollTop()>=scrollto)
           clearInterval(timer);    
    }
},500);

setTimeout(function(){clearInterval(timer);},10000);

ページの全高が500msごとに要求された位置までスクロールするのに十分かどうかを確認する間隔を設定しました。その場合は、スクロールします。位置に問題がなければ、間隔をクリアします。

これが機能しない場合、間隔は10秒後にクリアされます。

これを手伝ってくれてありがとう!

于 2011-11-22T14:26:10.513 に答える
0

@lalibiは、画像に高さが設定されているかどうかを確認するのに適しています。13450までスクロールするように要求しているが、現時点ではページの高さが13450px未満の場合、何かが正しく機能しません。scrollTopにタイムアウトを設定して、すべての画像が読み込まれるようにしようとしても、失敗しますか?そうでないことに気付いた場合は、すべてが読み込まれたら、scrollTopを実行するか、画像の高さを設定して、ページの高さが正確にわかるようにする必要があります。

于 2011-11-21T16:23:24.833 に答える