0

すべての功績は次のとおりです。

http://benalman.com/news/2010/03/jquery-special-events/#add-and-remove-hashchange

この方法については、次のことを行うかどうか疑問に思っていました。

if('onhashchange' in window){
    console.log('yep, window supports onhashchange');
}
else{
    console.log('nope, window does not support onhashchange');
}

ウィンドウ オブジェクトが onhashchange イベント ハンドラをサポートしているかどうかを確認する安全な方法はありますか?

ありがとう。

4

3 に答える 3

2

いいえ、これは一般的に安全なテストではありませんが、比較的新しいため、この特定のイベントでは問題ない場合があります。ホストオブジェクト(などwindow)がオペレーターにどのように応答するかについての保証はなく、古いバージョンのFirefoxを含む一部のブラウザーは、イベントハンドラーのプロパティをin返しません。true次の記事に詳細があります。

http://perfectionkills.com/detecting-event-support-without-browser-sniffing/

Firefoxはバージョン9で演算子を使用してイベントサポートを検出するためのサポートを追加したようですがin、3.6で追加されたonhashchangeため、の特別な動作がない限り、Firefox3.6〜8.0ではテストで誤検知が発生します。onhashchange

アップデート

Firefox 3.6でテストしましたが、テストが機能onhashchangeするため、これは特殊なケースのようです。たとえば、'onhashchange' in windowtrueを返しますが、そうではありません。'onload' in windowすべてのターゲットブラウザを注意深くテストすることをお勧めしますが、テストは問題ないようです。

于 2012-05-11T12:23:49.437 に答える
0

はい。'onhashchange'オブジェクトにキーが存在するかどうかを確認し、windowブール値を返します。安全でない使用法はありません。

于 2012-05-11T11:51:09.387 に答える
-1

私は次のようにします:

if (window.onhashchange) ...
于 2012-05-11T12:00:59.083 に答える