2

JSで奇妙な動作に気づきました

window.location.hash = '';
var hash = window.location.hash;
alert(hash + ' = ' + hash.length);
//outputs: ' = 0'
window.location.hash = '#';
hash = window.location.hash;
alert(hash + ' = ' + hash.length);
//outputs: ' = 0'
window.location.hash = '_';
hash = window.location.hash;
alert(hash + ' = ' + hash.length);
//outputs: '_ = 2'

基本的に3つの条件をトリガーしたい

  1. ハッシュなし
  2. ただハッシュ
  3. テキスト付きのハッシュ

ただし、JSはexample.com/とexample.com/#の違いを認識していないようです。また、ハッシュを完全に削除する方法がわかりません。

何か助けはありますか?

4

1 に答える 1

2
  1. ハッシュが設定されると、ページをリロードせずにハッシュを完全に削除することはできません(たとえば、#記号を削除する)。これは正常な動作です。

  2. 空/ヌルハッシュの設定とハッシュのデフォルトハッシュ(#)への設定は同じように扱われます。これは単なる内部動作です。すべてのブラウザがそれを一貫して処理するかどうかはわかりませんが、IIRCがその場合です。

最終的に、ハッシュを完全に削除したい場合はdocument.location.href = document.location.href、ページをリロードするために、を実行する必要があります(window.location.reload()ハッシュを保持します)。

于 2010-10-08T05:51:43.930 に答える