【发布时间】:2011-01-20 12:41:20
【问题描述】:
关于为什么以下内容不适用于任何 IE9 测试版的任何想法? IE8正常(或IE9运行兼容模式):
if(b.msie){
b.ver = /MSIE (\d+(.\d+)?)/.exec(ua)[1];
}else if(b.mozilla){
b.ver = /Firefox\/(\d+(.\d+)?)/.exec(ua)[1];
}else if(b.opera){
b.ver = /Opera\/? ?(\d+(\.\d+)?)/.exec(ua)[1];
}else if(b.safari){
b.ver = /Version\/(\d+(\.\d+)+)/.exec(ua)[1];
}else if(b.chrome){
b.ver = /Chrome\/(\d+(\.\d+)+)/.exec(ua)[1];
}
【问题讨论】:
-
什么“不起作用”?错误信息?出乎意料的结果?没发生什么事?电脑炸了?
-
它是用咖啡代替茶吗?
-
会不会是 IE9 报告其用户代理与以前的版本不同,因此与字符串不匹配?另外,您是否认为浏览器检测可能是个坏主意?特征检测通常比浏览器检测更好,正是因为这样的问题 - 当新版本发布时,浏览器检测往往会中断(如图所示)。另外,用户代理字符串可以被覆盖甚至完全阻止,这意味着您的浏览器检测脚本可能会被用户欺骗。