2

無限スクロールのページでは、次のシナリオに直面することがよくあります。

  • あなたはたくさんスクロールしていて、
  • 次に、無限のリストからいくつかのリンクをクリックし、
  • クリックしたものが気に入らない
  • だからあなたは戻って
  • 離れたところからスクロールを続けたい場合。
  • しかし、スクロールしていたすべてのアイテムがそこにあるわけではなく、すでに見たものすべてをもう一度スクロールする必要があります.

それらの状況にどのように対処しますか?そのための解決策を知っていますか?ページの状態を保存する方法はありますか、または少なくともこの状況が何であったかを知り、適切な量の無限リストをロードし、ユーザーを最後に見たアイテムにスクロールする方法はありますか.

4

3 に答える 3

3

特定の条件が真のときにスクロールしているときに、ページに追加する新しいコンテンツを何らかの方法でロードする必要があります。たとえば、ajax 呼び出しでページを呼び出すなどです。より多くのデータをロードするたびに、10 個のアイテムをロードするとします。したがって、現在の状態は、さらに 10 個のアイテムをロードした回数である可能性があります。たとえばアンカーを使用して、その情報を保存できます。

www.site.tld/index.php?id=999#load_counter=5

もう 1 つの可能性は、Cookie を使用して保存することです。そのデータの「保存」が最適な時期を試すことができます。たとえば、すべての AJAX 呼び出しの後、またはonbeforeunloadイベントを使用してページを離れるとき。

ページが読み込まれると、その種類のメタデータが Cookie または URL で利用できるかどうかを確認できます。ある場合は、以前にロードされたリスト要素をロードするAJAXリクエストを送信することにより、そのコンテンツを正確にロードできます。私の例では、これは

5 * 10

load_counterは 5 であり、読み込みごとにさらに 10 個のアイテムが読み込まれたためです。位置を再構築することもできます。ユーザーがスクロールした量の情報も保存するか、ユーザーがロードされたアイテムの最後のバルクを見ていると推測するだけです。たとえば、要素までスクロールできます(5-1)*10。それが最後のバルクの最初の要素です。

于 2015-01-16T16:21:49.957 に答える
2

これはかなり具体的でない自由回答式の質問ですが、いくつかの考えを共有させてください。

  • 戻ってきたページがリロードされる (つまりリセットされる) 理由の 1 つは、ブラウザーがそのページをキャッシュすることを禁止しているためです。スクロールを含むページに pragma:no-cache などを含める必要がまったくない場合は、なしで試してくださいブラウザは最後の既知の状態に戻ることができるため、これで問題が解決する場合があります。

  • これが機能しない場合、またはページの読み込みごとに最新のデータを確保する必要がある場合、解決策はコンテンツとフレームワークによって異なります。おそらく、サーバー側の状態をセッションに保存し、それに応じてページを再構築するか、参照を使用して Cookie を設定し、リロード時にクライアント側のスクリプトをその時点までポーリングさせることができます。

  • それ以外に、私が言えることは、ほとんどの無限スクロール フレームワークは単に「まあ、これは問題だ」と言っているということだけです。別の方法は、明示的なページネーションを使用することです。

于 2015-01-16T16:18:47.867 に答える