微软刚刚发布了正式版 Internet Explorer 9,又马不停蹄的开始开发 IE10,最近发布了 IE10 Platform Preview 1。该版本除了具备一些 不错的 新 功能之外,还包含了新的 user-agent 字符串:
Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/6.0)
与变化较大的 IE9 user-agent 字符串 相比,IE10 的字符串目前只有两处修改:
- “MSIE” 的值更新为 “10.0”
- “Trident” 的值更新为“6.0”
与IE8和ie9相同,IE10 的“兼容性视图”仍然以IE7的标准来处理。在兼容性视图中,User Agent 与 IE7 类似,但是 “Trident” 的值会是“6.0” ,以便识别出实际上使用的是 IE10:
Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/6.0)
这对我有何影响?
如果你的网站仍然在使用user-agent 探查方法,那么“MSIE”的值更新为 “10.0”是一个值得注意的问题。为什么? 因为10比9要多出一位数。大多数网站可能不会受到影响,但是某些网站可能不能正常处理多出来的一位数,例如将 IE10 识别为 IE1。
下面的例子是一个正则表达式,使用它就会错误的提取MSIE的值的第一位:
// INCORRECT: will report IE10 version in capture 1 as "1" var matchIE = /MSIE\s(\d)/;
下面这个表达式才能正确检测到“MSIE”的值:
// Correct: will report IE10 version in capture 1 as "10.0" var matchIE = /MSIE\s([\d.]+)/
当然,如果使用不同的编程语言,表达式的写法是不一样的。如果在 Apache 服务器上使用自定义的 HTTPS 配置,推荐阅读 Eric Lawrence 写的这篇文章.
立即行动
现在就可以下载 IE10 Platform Preview 1来测试你的网站对 IE10 新的 user-agent 字符串的兼容情况在需要的情况下更新 user-agent 探查逻辑,或者考虑迁移到上面提到的 feature detection 方法,避免在以后再遇到同样的升级 User Agent 的问题。
本文转自wbpluto 51CTO博客,原文链接:http://blog.51cto.com/wbpluto/612080,如需转载请自行联系原作者