4

我想检查浏览器是否支持hashchange事件,如果不支持,则使用setInterval.

我努力了

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

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

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

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

4

2 回答 2

1

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

但我刚刚用IETester尝试过,并'onhashchange' in window给出了false.

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

于 2013-08-27T21:45:02.173 回答
-2

我不确定为什么 IE 会给你这个,但为什么不只是测试真实

if(("onhashchange" in window) === true){
  /* Supported */
}else{
  /* Backup */
}
于 2013-08-27T21:11:58.553 回答