jQueryには、jQuery-pusherと呼ばれる、ブラウザーのURLを変更するための優れたプラグインがあります。
JavaScript pushState
とjQueryは、次のように一緒に使用できます。
history.pushState(null, null, $(this).attr('href'));
例:
$('a').click(function (event) {
// Prevent default click action
event.preventDefault();
// Detect if pushState is available
if(history.pushState) {
history.pushState(null, null, $(this).attr('href'));
}
return false;
});
状態を変更した後に作成されたXMLHttpRequestオブジェクトのHTTPヘッダーで使用されるリファラーを変更するJavaScript のみをhistory.pushState()
使用します。
例:
window.history.pushState("object", "Your New Title", "/new-url");
pushState()メソッド:
pushState()
状態オブジェクト、タイトル(現在は無視されます)、および(オプションで)URLの3つのパラメーターを取ります。これらの3つのパラメーターをそれぞれ詳しく見てみましょう。
状態オブジェクト —状態オブジェクトは、によって作成された新しい履歴エントリに関連付けられたJavaScriptオブジェクトpushState()
です。ユーザーが新しい状態に移動すると、popstateイベントが発生し、イベントのstateプロパティに履歴エントリの状態オブジェクトのコピーが含まれます。
状態オブジェクトは、シリアル化できるものであれば何でもかまいません。Firefoxは状態オブジェクトをユーザーのディスクに保存するため、ユーザーがブラウザーを再起動した後にそれらを復元できるため、状態オブジェクトのシリアル化された表現に640k文字のサイズ制限を課しています。シリアル化された表現がこれよりも大きい状態オブジェクトをに渡すpushState()
と、メソッドは例外をスローします。これ以上のスペースが必要な場合は、sessionStorageまたはlocalStorage、あるいはその両方を使用することをお勧めします。
title — Firefoxは現在このパラメータを無視していますが、将来使用する可能性があります。ここに空の文字列を渡すと、メソッドが将来変更されても安全です。または、移動先の州の短いタイトルを渡すこともできます。
URL —新しい履歴エントリのURLは、このパラメーターによって指定されます。ブラウザはへの呼び出し後にこのURLのロードを試みませんpushState()
が、たとえばユーザーがブラウザを再起動した後など、後でURLのロードを試みる可能性があることに注意してください。新しいURLは絶対的なものである必要はありません。相対である場合は、現在のURLを基準に解決されます。新しいURLは、現在のURLと同じオリジンである必要があります。そうでない場合、pushState()
例外がスローされます。このパラメーターはオプションです。指定されていない場合は、ドキュメントの現在のURLに設定されます。