有没有办法在不使用用户代理的情况下从IE8-IE11中检测IE?

时间:2014-04-22 10:04:29

标签: javascript internet-explorer

人,

只需从jQuery 1.8.3升级到1.11,browser对象将从1.9中删除,不建议使用user-agent进行判断。但我仍然需要检测浏览器是否在我的代码的某个点上是IE。

条件样式表仅支持IE6-IE9,我搜索和搜索,似乎只有user-agent才是终极方式。

有办法吗?哪个可以检测到浏览器是IE,不使用user-agent并从IE8工作到IE11?

非常感谢。

2 个答案:

答案 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)

至少有两种解决方案可以解决您的问题:

  1. 检测浏览器功能(推荐)Dokumentation for modernizr here
  2. 使用jQuery Migrate Plugin Download here
  3.   

    Modernizr旨在结束UA嗅探练习。使用特征检测是一种更可靠的机制,可以在当前浏览器中建立您能做什么和不能做什么 - Taken from modernizr.com