2009-07-31 21 views
6

この時点で、ハッシュ値を使用して現在どの写真がユーザーに表示されているかを判断し、そのページを友人などに送信するフォトギャラリーがあります。何かのように:私たちは、次または前のボタンをクリックした後、対応する画像をロードしているtop.location.replaceはSafari/Chromeで履歴項目を作成します

http://url/photos/#photo-4

、我々は使用してJS 1.1の仕様に応じてURLを変更します。

top.location.replace(url.url + hash); 

私たちが望んでいた行動があります履歴項目が作成されていないため、戻るボタンを使用して前の写真を表示する代わりに、戻るボタンを使用してフォトギャラリーを終了することができます。

IEとFirefoxでは、この方法は魅力的ですが、SafariとChromeは変更されたURLの履歴項目を作成します。私はこのようなナビゲーションのためにハッシュを使用するときにヒストリー項目を作成する方法をサンプルの多くを見つけましたが、私はこれを他の方法で行いたいと思います。どんな手掛かり?

答えて

3

今期待通り、この作品:

サファリで[5.1.7] location.replace()期待通りに動作します - URLを交換し、何も戻るボタンのキューに追加されていない、と何も追加されません履歴メニューに移動します。 クローム [21.0.1180.82] location.replace()で

は少しトリッキーです - URLが交換され、何も戻るボタンのキューに追加されていないが、それは、履歴メニューに項目を追加しません。


これは、ヒストリメニューと戻る/進むボタンの2つの異なる履歴キューがあるということです。前後のボタンをクリックしたままにしてキューを表示し、履歴メニューと比較します。

また、戻る/進むボタンの履歴キューは、アクティブなタブに関連付けられています。また、ヒストリメニューをクリアしても、ボタンを閉じるまではボタンの履歴が残っています。

0

URL全体を置き換える代わりに、window.location.hash = newHashを使用してハッシュを割り当ててみましたか?

https://developer.mozilla.org/en/DOM/window.location

+0

はい replace(url)\t現在のドキュメントを指定されたURLに置き換えます。assign()メソッドとの違いは、replace()を使用した後、現在のページはセッション履歴に保存されませんユーザーは「戻る」ボタンを使用してナビゲートすることはできません。 Webkitでは動作しないので、バグがあります。 –

+0

私の答えを明確にします – MyItchyChin

+1

location.hashはIE以外のすべての主要なブラウザに履歴項目を作成しますので、うまくいきません:-) –

3

は、この時点では何の解決策はないように思えます。

+0

ちょうど記録のために、それは2年後もまだ迷惑な問題です... Webkitバグ修正は少し遅いです。 – DarthJDG

関連する問題