15

ハッシュ値を変更するときにブラウザがバックヒストリーエントリを記録しないようにするために呼び出すことができる関数はありますか?

ユーザーが各画像を移動するときにページをリロードせずにブラウザーのURLを変更する単純なJavaScriptギャラリーを作成しています。

これは、location.hashを画像の一意のIDに設定することによって行われます。

window.location.hash = imageID;

問題は、ユーザーがブラウザの戻るボタンを押すと、ページの読み込みのようにすべての画像を逆方向に移動する必要があることです。

ギャラリーを使用して20枚の画像を回転させた場合、前のページに戻るには21回クリックする必要があります。

過去の履歴がjavascriptで記録されないようにするにはどうすればよいですか?

4

2 に答える 2

32

window.location.replaceブラウザの履歴に追加せずにURLを設定できます。

var baseUrl = window.location.href.split('#')[0];
window.location.replace( baseUrl + '#' + imageID );

ドキュメンテーション

于 2012-07-13T13:23:27.383 に答える
4

replaceState()を使用できます。

ハッシュを変更する前に履歴を保存し、次にハッシュを変更し、最後に履歴を保存した履歴に置き換えます。

または、 popStateEventを使用することもできます。

于 2012-07-13T13:06:42.583 に答える