0

AJAX を使用してコンテンツを更新するサイトがあります。プログレッシブ エンハンスメントを念頭に置いて開発されたため、クエリ文字列も処理します。

PHP を使用した URL:

index.php/products?cat=1&colors=1

AJAX を使用した URL:

index.php/products (Currently stays like this for the life of this page)

この URL で終了したい:

index.php/products#cat=1&colors=1

history.js を使用したかったのですが、HTML5 ブラウザーの場合、URL が最初の URL のように変更されることに気付きました。(!!)

history.js はwindow.location実際にリンクにジャンプせずに を変更するだけですか? そうでない場合は、PHP を使用してページ全体がリロードされるため、スクリプトの目的が無効になります。この場合、このライブラリに回避策はありますか?

4

1 に答える 1

1

のドキュメントhistory.jsから、ライブラリは機能を提供pushStatereplaceStateます。ブラウザーの履歴の操作に関する Mozilla の記事は 、これが何を意味するのかを理解するのに役立ちます。

URL — 新しい履歴エントリの URL は、このパラメーターによって指定されます。ブラウザーは、pushState() の呼び出し後にこの URL を読み込もうとはしませんが、ユーザーがブラウザーを再起動した後など、後で URL を読み込もうとする可能性があることに注意してください。

したがってpushState、を含む何らかの手段で使用するhistory.jsと、URL が変更されるため、ユーザーは URL をブックマークして後で戻って同じ結果を得ることができますが、pushStateアクションの結果としてブラウザはページをロードしません。

また、と の違いをpushState理解replaceStateしてください。どちらもアドレス バーの URL を変更しますが、履歴への影響は異なります。

于 2013-11-14T13:19:50.460 に答える