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远离这项技术。