web-dev-qa-db-ja.com

window.location.hashの設定に関する潜在的な問題

ある時点でwindow.location.hashを特定の文字列に設定するJavaScriptコードがいくつかあります。これはFirefox3で正常に機能しますが、後でこれで問題が発生するかどうかを知りたいです。つまり、これはクロスブラウザーソリューション(IE6を含む)ですか?

また、ReallySimpleHistoryを使用しています。これは内部状態を台無しにしますか?

ありがとう

23
Cameron

_window.location.hash_は、1995年にNetscape Navigator2でJavaScriptが導入されて以来存在しています。1996年にInternetExplorer3でMicrosoftによって最初にサポートされました。JS対応のすべてのブラウザがJavaScriptをサポートしていることは間違いありません。

ソースを一目見ただけでは、ReallySimpleHistoryがこのプロパティをかなり広範囲に使用しているように見えるので、壊してしまう可能性があります。代わりに、そのadd(newLocation)メソッドを使用することをお勧めします(これは_window.location.hash_を設定することで機能します)。

25
NickFitz

Get:

 var hash = location.hash.slice(1);

設定:

 location.hash = '#' + 'string';
15
Thinker

私が知っている古いスレッドですが、window.location.hashもサイズ制限の対象となります。大量のデータを渡していて、状態をハッシュに保存したい場合は、いくつかの問題が発生する可能性があります。

IEはエラーを出します:SCRIPT5 - Access denied.制限を超えているハッシュを割り当てようとすると非常に便利です。

ただ考えるための食べ物。

12
ginman

すべての「最新の」(別名Aグレード)ブラウザでは、ハッシュを設定でき、そうするときにページを再読み込みしません。 ページをリロードしますは、Safari 2.0.4Opera 8.5xなどの古いものです。

comp.lang.javascript に関する私のUsenetの投稿を参照してください。ここで、もう少し詳しく説明します。

また、HTML5は最終的に、ハッシュセッターが実際のハッシュを変更する必要があることを指定していますが、ページをリロードしないであることに注意してください。

4
kangax

window.location.hashの設定は、IE6およびIE7で正常に機能します。

場合によっては、セットの直後にIE6でwindow.location.hashを読み取ると古い値が返されますが、ブラウザーはハッシュを正常に設定しています。例:

alert(window.location.hash);
window.location.hash = '#newHash';

/* Sometimes, it will return the old value,
   I haven't figured out why it does that, and
   it's rather rare. */
alert(window.location.hash);

設定に使用しているだけであれば、問題は発生しません。

3
Andrew Moore