3

我想檢查瀏覽器是否支持hashchange事件,如果不支持,則用setInterval假冒它。爲什麼在IE8的IE7兼容模式下,窗口中的'onhashchange'返回'true`?

我已經試過

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

但問題是,在IE8在IE7兼容模式,'onhashchange' in window回報true因爲window.onhashchangenulljsfiddle

它爲什麼會發生?如果我使用'onclick2' in window,則返回false

我已閱讀Detecting support for a given JavaScript event?,但如果可能的話,我寧願使用更簡單的東西。

+0

「IE8在IE7模式」:可以在模式功能可以包括最近的事態發展,以及,對行爲的頂部像IE7? – mavili

+0

@mavili我不知道,但''hashchange'事件不能在IE8模式下的IE8上工作 – Oriol

回答

1

看來'onhashchange' in windowtrue因爲我在IE7模式,而不是真正的IE7

使用IE8

但我剛剛嘗試過IETester'onhashchange' in window給出false

現在,我不知道爲什麼IE 8有IE7模式,如果它不能模仿IE7很好

+0

問題是它模擬舊版本*足夠好*。兼容性視圖從來都不是完美的(IE的設計也並非如此),而IE團隊正在繼續使用IE11從技術中移開。 – EricLaw

-2

我不知道爲什麼IE瀏覽器給你的,但爲什麼不只是測試真正

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

不,問題是''onhashchange'在窗口'給出'真正的' – Oriol