3

数週間前、jquery を使用して無限スクロール ページを実装しました。スクロール自体はうまく機能しますが、非常に奇妙な副作用があります。

スクロールして新しいコンテンツをロードすると、最初の数秒間はどのリンクも機能しません。実際、ページのどのリンクも数秒間機能しません。そして、たとえば 5 ページを立て続けにロードするなど、非常に遠くまでスクロールすると、さらに悪化するようです。その場合、ページ上の任意のリンクをクリックできるようになるまで 20 秒待たなければなりません。

私は Firefox や IE8 を使用して同じ経験をしているので、ブラウザではないと推測しています。

原因または修正方法は何か考えはありますか?

4

1 に答える 1

0

まだこの問題がありますか?

質問:

  • ページが読み込まれてから20秒後、リンクはクリック可能になりますか?ブラウザは20秒間「フリーズ」しているのですか、それともクリックできないリンクだけですか?
  • より多くのコンテンツをロードするには、「もっと表示」というリンクですか、それともユーザーがページの下部に到達するとコンテンツが自動的にロードされますか?
  • jQueryの.scroll()を使用してコンテンツを更新していますか?

最初の考え:

  • クリックできないリンクに.click()または.bind('click'、function)を使用していますか?代わりに.live('click'、function)を試してください。
  • setTimeoutを使用してみてください。一部のブラウザでは、jQueryの.scrollは、スクロールバーが変更されるピクセルごとにハンドラー関数を呼び出します...すべてのスクロールが完了すると、関数呼び出しの過負荷が発生する可能性があります。スクロールしたときに1000個の関数呼び出しを行わないようにこのようなことを試してください(これは単なる簡単な例です...コードの方が良いかもしれません):

    <script type="text/javascript">
        var scrolling = false;
        $(document).scroll('setScroll');
    
        function setScroll() {
            scrolling = setTimeout(doScrollUpdate, 300);
        }
    
        function doScrollUpdate() {
            clearTimeout(scrolling);
            // Do your ajax stuff here
        }
    </script>
    
于 2012-01-19T08:16:25.903 に答える