Javascript 为什么';onhashchange';在IE8的IE7兼容模式下的窗口'return'true'中?

Javascript 为什么';onhashchange';在IE8的IE7兼容模式下的窗口'return'true'中?,javascript,internet-explorer,javascript-events,feature-detection,graceful-degradation,Javascript,Internet Explorer,Javascript Events,Feature Detection,Graceful Degradation,我想检查浏览器是否支持hashchange事件,如果不支持,则用setInterval假装它 我试过了 if ('onhashchange' in window) { window.onhashchange = hashChange; } else { /* setInterval graceful degradation */ } 但问题是,在IE7兼容模式下的IE8中,'onhashchange'在window中返回true,因为window.onhashchange是nu

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

我试过了

if ('onhashchange' in window) {
    window.onhashchange = hashChange;
} else {
    /* setInterval graceful degradation */
}
但问题是,在IE7兼容模式下的IE8中,
'onhashchange'在window
中返回
true
,因为
window.onhashchange
null
()

为什么会这样?如果在窗口中使用
'onclick2',它将返回
false


我已经读过了,但如果可能的话,我更愿意使用更简单的东西。

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

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

似乎窗口中的“onhashchange”是
真的
,因为我在IE7模式下使用的是IE8,而不是真正的IE7

但我刚刚试过,窗口中的“onhashchange”给出了
false


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

“IE7模式下的IE8”:除了表现得像IE7之外,模式功能还会包括更新的开发吗?@mavili我不知道,但是
hashchange
event在IE7模式下对IE8不起作用,问题在于,window中的
'onhashchange
给出了
true
关键是它足够好地模拟了旧版本。兼容性视图从来都不是完美的(也不是设计成完美的),IE团队正在继续使用IE11远离这项技术。