为什么`'onhashchange'在IE8的IE7兼容模式的窗口“return”true中

Why does `'onhashchange' in window` return `true` in IE7 compat mode of IE8?

本文关键字:窗口 return true 模式 IE7 onhashchange IE8 为什么      更新时间:2023-09-26

我想检查浏览器是否支持hashchange事件,如果不支持,用setInterval伪造它。

我试过

if ('onhashchange' in window) {
    window.onhashchange = hashChange;
} else {
    /* setInterval graceful degradation */
}

但问题是,在IE7 Compat模式下的IE8中,'onhashchange' in window返回true,因为window.onhashchangenull(jsfiddle)

为什么会发生这种情况?如果我使用'onclick2' in window,它将返回false

我已经阅读了检测对给定JavaScript事件的支持?,但如果可能的话,我更喜欢用更简单的。

似乎'onhashchange' in windowtrue,因为我在IE7模式中使用IE8,而不是真正的IE7

但我刚刚在IETester上尝试过,'onhashchange' in window给出了false

现在,我想知道如果IE8不能很好地模拟IE7,为什么它会有IE7模式

我不知道IE为什么会给你这个,但为什么不测试真正的

if(("onhashchange" in window) === true){
  /* Supported */
}else{
  /* Backup */
}