为什么`' onhashchange'在窗口`在IE8的IE7 compat模式中返回`true`?

时间:2013-08-27 20:53:09

标签: javascript internet-explorer javascript-events feature-detection graceful-degradation

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

我试过了

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

但问题是,在IE7的IE7 Compat模式中,'onhashchange' in window返回true,因为window.onhashchangenulljsfiddle

为什么会这样?如果我使用'onclick2' in window,则返回false

我已阅读Detecting support for a given JavaScript event?,但如果可能的话,我更愿意使用更简单的东西。

2 个答案:

答案 0 :(得分:1)

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

但我刚刚使用IETester'onhashchange' in window尝试了false

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

答案 1 :(得分:-2)

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

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