我想检查浏览器是否支持hashchange
事件,如果不支持,用setInterval
伪造它。
我试过
if ('onhashchange' in window) {
window.onhashchange = hashChange;
} else {
/* setInterval graceful degradation */
}
但问题是,在IE7 Compat模式下的IE8中,'onhashchange' in window
返回true
,因为window.onhashchange
是null
(jsfiddle)
为什么会发生这种情况?如果我使用'onclick2' in window
,它将返回false
!
我已经阅读了检测对给定JavaScript事件的支持?,但如果可能的话,我更喜欢用更简单的。
似乎'onhashchange' in window
是true
,因为我在IE7模式中使用IE8,而不是真正的IE7
但我刚刚在IETester上尝试过,'onhashchange' in window
给出了false
。
现在,我想知道如果IE8不能很好地模拟IE7,为什么它会有IE7模式
我不知道IE为什么会给你这个,但为什么不测试真正的
if(("onhashchange" in window) === true){
/* Supported */
}else{
/* Backup */
}