在不使用 jQuery 或任何附加库的情况下,检测 IE 和 JavaScript 版本低于 9 的浏览器的最快、最短(最佳)方法是什么?
在没有库的情况下在 JavaScript 中检查 IE 小于 9 的最佳方法
Javascript
var ie = (function(){
    var undef,
        v = 3,
        div = document.createElement('div'),
        all = div.getElementsByTagName('i');
    while (
        div.innerHTML = '<!--[if gt IE ' + (++v) + ']><i></i><![endif]-->',
        all[0]
    );
    return v > 4 ? v : undef;
}());
然后你可以这样做:
ie < 9
作者 James Panolsey 从这里:http ://james.padolsey.com/javascript/detect-ie-in-js-using-conditional-comments
物有所值:
    if(  document.addEventListener  ){
        alert("you got IE9 or greater");
    }
这成功地针对 IE 9+,因为该addEventListener方法很早就被除 IE 之外的每个主要浏览器支持。(Chrome、Firefox、Opera 和 Safari)MDN 参考。它目前在 IE9 中得到支持,我们可以期待它在这里继续得到支持。
使用条件注释,您可以创建一个仅在 IE 小于 9 中执行的脚本块。
<!--[if lt IE 9 ]>
<script>
var is_ie_lt9 = true;
</script>
<![endif]--> 
当然,您可以在此块之前添加一个通用块声明var is_ie_lt9=false,这将覆盖小于 9 的 IE。(在这种情况下,您需要删除var声明,因为它会重复)。
编辑:这是一个不依赖于内嵌脚本块的版本(可以从外部文件运行),但不使用用户代理嗅探:
通过@cowboy :
with(document.createElement("b")){id=4;while(innerHTML="<!--[if gt IE "+ ++id+"]>1<![endif]-->",innerHTML>0);var ie=id>5?+id:0}
bah 有条件的评论!一路条件码!!!(愚蠢的IE)
<script type="text/javascript">
/*@cc_on
   var IE_LT_9 = (@_jscript_version < 9);
@*/
</script>
说真的,只是把它扔在那里,以防它更适合你……它们是一样的,这可以放在 .js 文件中,而不是内联 HTML
注意:此处 jscript_version 检查为“9”完全是巧合。将其设置为 8、7 等不会检查“是 IE8”,您需要查找这些浏览器的 jscript 版本。
以下是对 James Padolsey 解决方案的改进:
1)它不会污染内存(例如,James 的代码片段在检测 IE11 时创建了 7 个未删除的文档片段)。
2) 它更快,因为它在生成标记之前检查 documentMode 值。
3) 它更易读,尤其是对于 JavaScript 初学者。
要点链接:https : //gist.github.com/julianshapiro/9098609
/*
 - Behavior: For IE8+, we detect the documentMode value provided by Microsoft.
 - Behavior: For <IE8, we inject conditional comments until we detect a match.
 - Results: In IE, the version is returned. In other browsers, false is returned.
 - Tip: To check for a range of IE versions, use if (!IE || IE < MAX_VERSION)...
*/
var IE = (function() { 
    if (document.documentMode) {
        return document.documentMode;
    } else {
        for (var i = 7; i > 0; i--) {
            var div = document.createElement("div");
            div.innerHTML = "<!--[if IE " + i + "]><span></span><![endif]-->";
            if (div.getElementsByTagName("span").length) {
                return i;
            }
        }
    }
    return undefined;
})();