2009-08-31 5 views
2

に設定されます。Safari 3+ではwindow.location.hashをnullに設定すると、#に設定されます。Safari 3+でwindow.location.hashをnullに設定すると、#

window.location.hash = '#foo' => #foo

しかし、

window.location.hash = NULL =>#

ヌルではなく空の文字列に設定した場合も同じです。 Safari 3 + 4での動作は間違いなく発生し、ではなく、FF3または4でが発生します。

この場合の対処方法はありますか?確かに、それは審美的に動機付けされたものですが、私はまだすべてのブラウザで一貫した動作が欲しいと思います。

+0

FF 4はありません。 FF 3.5.2では、ハッシュを 'null 'に設定すると、URLに'# 'が追加されます。一貫した動作のために、私はハッシュに文字列値だけを割り当てることをお勧めします。代入の前に 'null 'を' 'に強制するのは十分に簡単です。 – kangax

答えて

0

Safari 4(これは3つのことを知らない)では#が消え、ページがリロードされません。

window.location.hash = 'foo'; 
window.history.go(-1); 

ただし、明らかにブラウザの履歴が混乱します。クリックするとhttp://whatever.com/#fooになります。

+0

これは非常に不完全な解決策です。元のURLにハッシュが含まれていて、そのURLを削除したい場合は、機能しません。 –

+0

私が知る限り、完全な解決策がないので、そうでなければ私たちに啓発することは自由です。これは明らかにちょうどハックであり、超堅牢であることを意図していません。 – David

0

ハッシュを空の文字列に設定します。 Nullはハッシュプロパティ(常に文字列)の有効な値ではありません。私のためにSafari 3.2.1/Winで動作します。 (オペラ10では何の理由でもありませんが、誰が気にしていますか?URLの末尾に空白のハッシュ部分がありますか?)

+3

設定場所.hash = '';まだ彼が避けようとしているURLに#記号が残っています。 – David

関連する問題