我感兴趣的是,哪个位置是检测客户端的用户代理、客户端 (javascript) 或服务器端的最佳位置?我提出这个问题是因为一些 IE8 用户收到一条消息说他们正在使用 IE6。
最佳答案
简短而正确的答案是:不要使用任何依赖于 UserAgent 嗅探的东西。
为了能够可靠地调整代码路径,您应该测试调整代码路径的特定“事物”,主要是功能。这叫做 Feature Detection .
因此,如果功能 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)
}
您认为 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] = ....
}
关于javascript - 哪个是检测客户端用户代理的更好方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2968731/