1

jQueryに次のようなウィンドウオブジェクトへの.hashchangeメソッド参照があるかどうかを確認しようとしています。

$(window).data('events').hasOwnProperty('hashchange') ?
    $(window).hashchange(hashChange) :
    window.onhashchange = hashChange;

しかし、関数をサポートしているブラウザとサポートしていないブラウザの両方で、「Uncaught TypeError:Undefinedのメソッド'hasOwnProperty'を呼び出すことができません」というメッセージが表示され続けます。何か案は?

4

2 に答える 2

4

1つの方法は、プロパティが単に未定義であるかどうかを確認することです

if ($(window).hashchange === undefined) {
  // Not defined
}

注:これは、値が定義されているかどうかと名前が定義されているかどうかを実際にチェックします。明示的なundefined値で値を定義することは可能ですが、この2つはおそらくシナリオと同等です。

var x = {}
x.test = undefined;
x.hasOwnProperty("test") // true
x.test === undefined // true
于 2012-02-27T21:13:04.570 に答える
0
$(window).data('events') === undefined

そのため、プロパティはありません。


まず、データにオブジェクトが含まれていることを確認する必要があります。

var window_data = $(window).data('events');

if(window_data !== undefined){
   window_data.hasOwnProperty('hashchange') ?
    $(window).hashchange(hashChange) :
    window.onhashchange = hashChange;
}
else {
    window.onhashchange = hashChange;
}

于 2012-02-27T21:14:07.327 に答える