문제

I want to check if the browser supports hashchange event and, if not, fake it with setInterval.

I have tried

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

But the problem is that, in IE8 in IE7 Compat mode, 'onhashchange' in window returns true because window.onhashchange is null (jsfiddle)

Why does it happen? If I use 'onclick2' in window, it returns false!

I have read Detecting support for a given JavaScript event?, but I would prefer to use something simpler if possible.

도움이 되었습니까?

해결책

It seems 'onhashchange' in window was true because I was using IE8 in IE7 mode instead of real IE7

But I have just tried it with IETester and 'onhashchange' in window gives false.

Now, I wonder why does IE 8 have IE7 mode if it can't emulate IE7 very well

다른 팁

I'm not sure why IE is giving you that, but why not just test for true

if(("onhashchange" in window) === true){
  /* Supported */
}else{
  /* Backup */
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top