为什么在IE8的IE7兼容模式下,窗口中的"onhashchange"返回"true"?



我想检查浏览器是否支持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 */
}

相关内容

  • 没有找到相关文章

最新更新