我正在尝试检查jQuery是否有一个对窗口对象(如)的.hashchange方法引用
$(window).data('events').hasOwnProperty('hashchange') ?
$(window).hashchange(hashChange) :
window.onhashchange = hashChange;
但在支持&不支持该功能。有什么想法吗?
一种方法是查看属性是否只是未定义的
if ($(window).hashchange === undefined) {
// Not defined
}
注意:这实际上是检查是否根据名称定义了值。可以用显式undefined
值定义该值,但对于您的场景,这两个值可能是等效的
var x = {}
x.test = undefined;
x.hasOwnProperty("test") // true
x.test === undefined // true
$(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;
}