人,
只需从jQuery 1.8.3升级到1.11,browser
对象将从1.9中删除,不建议使用user-agent
进行判断。但我仍然需要检测浏览器是否在我的代码的某个点上是IE。
条件样式表仅支持IE6-IE9,我搜索和搜索,似乎只有user-agent
才是终极方式。
有办法吗?哪个可以检测到浏览器是IE,不使用user-agent
并从IE8工作到IE11?
非常感谢。
答案 0 :(得分:1)
IE 5-9最可靠的方法是使用条件注释:
var div = document.createElement("div"), ie;
div.innerHTML = "<!--[if IE 5]>5<![endif]--><!--[if IE 5.0]>5<![endif]-->"
+ "<!--[if IE 5.5]>5.5<![endif]--><!--[if IE 6]>6<![endif]-->"
+ "<!--[if IE 7]>7<![endif]--><!--[if IE 8]>8<![endif]-->"
+ "<!--[if IE 9]>9<![endif]-->";
if (div.firstChild && div.firstChild.nodeType === 3) ie = +div.innerHTML;
但这对IE10-11不起作用,因为那些不支持条件注释,IE11 甚至在兼容模式下(并且那种糟糕的 - 使用了条件注释很多)。 编辑:幸运的是,已经修复the exact same day我给出了这个答案。啊!
如果您设法检测到其供应商前缀,您仍然可以检查它是否为IE10-11,例如:
var prop, isIE = false;
for (prop in div.style)
if (/^ms[A-Z]/.test(prop)) {
isIE = true;
break;
}
这样可行,但除非您检查UA字符串或某些近期功能,否则您将无法从IE11告知IE10。
但老实说,IE10 +很好,也应该自动更新。您应该为这些进行功能检测,并忘记版本。
答案 1 :(得分:0)
至少有两种解决方案可以解决您的问题:
Modernizr旨在结束UA嗅探练习。使用特征检测是一种更可靠的机制,可以在当前浏览器中建立您能做什么和不能做什么 - Taken from modernizr.com