Ada*_*dam 5 javascript cross-browser hashchange
我试图检查浏览器是否支持onHashChange隐藏一些代码,如果没有,以这种方式:
if(window.onhashchange){
...code...
} else {
...other code...
}
Run Code Online (Sandbox Code Playgroud)
我也试过这个:
if(typeof window.onhashchange === "function"){
alert("Supports");
} else {
alert("Doesn't Supports");
}
Run Code Online (Sandbox Code Playgroud)
正如Quirksmode所描述的,这应该可以工作,但是如果我alert在true statein中做一个而Safari不是警告我但是Safari不支持onHashChange:S
有什么问题呢?如果我没有正确的方式,我应该如何检查它?
CMS*_*CMS 22
您可以使用in运算符检测此事件:
if ("onhashchange" in window) {
//...
}
Run Code Online (Sandbox Code Playgroud)
也可以看看:
小智 6
请注意,最好使用特征检测而不是存在推断(例如窗口中的"onhashchange").
@xkit向我解释了一个很好的特性测试来解决这样一个事实,即虽然IE7不支持onhashchange,但在使用IE7标准文档时,它仍然会返回true,例如if(窗口中的"onhashchange"){/ code /} IE8中的模式.
@xkit建议在onhashchange事件的处理函数中设置一个标志(例如var isSet = true;).然后使用JavaScript更改window.location.hash并查看是否已设置标志.
| 归档时间: |
|
| 查看次数: |
8212 次 |
| 最近记录: |