wes*_*que 2 javascript ruby ruby-on-rails
我感兴趣的是哪个是检测客户端的用户代理,客户端(javascript)或服务器端的最佳位置?我提出这个问题是因为一些IE8用户收到消息说他们正在使用IE6.
简短而正确的答案是:不要使用任何依赖于UserAgent嗅探的东西.
为了能够可靠地调整代码路径,您应该测试代码路径调整的特定"事物",主要是功能.这称为特征检测.
因此,如果支持功能X,我们会这样做,如果不是,我们会这样做.
如果基于哪个UserAgent支持某项功能,则推断将很快失败,尤其是当新浏览器进入标记时.
以下示例,实际上可以在几个主要库中找到(!)
if (isIE8) {
// use new feature provided by IE8
} else if (isIE7) {
// use not so new feature provided by IE7 (and IE8)
} else {
// use fallback for all others (which also works in IE7 and IE8)
}
Run Code Online (Sandbox Code Playgroud)
当IE9出现时,您认为会发生什么?
在这种情况下,正确的模式是
if ("addEventListener" in foo) {
// use DOM level 2 addEventListener to attach events
foo.addEventListener(...
} else if ("attachEvent" in foo) {
// use IE's proprietary attachEvent method
foo.attachEvent(...
} else {
// fall back to DOM 0
foo["on" + eventName] = ....
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1283 次 |
| 最近记录: |