Firefox: EnableChrome: EnableOpera: EnableSafari: EnableIE: Enable

一段巧妙判断IE浏览器版本的js代码

2011
Apr
27
Tags: ,
4条评论

转自:www.joy-studio.com

下面这段代码使用IE可以识别html注释的特性,可以准确的判断IE浏览器的版本号,没有使用诸多怪异的测力检测方法,超级简洁。 原作者的代码地址在这里,我做了一点小改动,文中有注释,可以到这里运行测试。

/**
 * ie equals one of false|6|7|8|9 values, ie5 is fucked down.
 * Based on the method: https://gist.github.com/527683
 */
var ie = function () {
    var v = 4, //原作者的此处代码是3,考虑了IE5的情况,我改为4。
        div = document.createElement('div'),
        i = div.getElementsByTagName('i');
    do {
        div.innerHTML = '<!--[if gt IE ' + (++v) + ']><i></i><![endif]-->';
    } while (i[0]);
    return v > 5 ? v : false; //如果不是IE,之前返回undefined,现改为返回false。
}();

4 Responses to “一段巧妙判断IE浏览器版本的js代码”

  1. 头像
    gucong Reply #1

    这样的代码也敢说是巧妙???
    这样写才是巧妙的!!
    /*@cc_on alert(document.documentMode||( document.compatMode == "CSS1Compat" ? "XMLHttpRequest" in window ? @_jscript_version*10-50 : 6 : 5)) @*/
    只有一行代码,只针对IE起作用,而且考虑了IE用户自选渲染模式、怪癖模式、支持IE5、6、7、8、9及10。
    不要怪我喷你。实在看不下去了,这方法太笨了。

  2. 头像
    Doomin Reply #2

    @gucong
    你有更多的解决方案,分享就是了,干嘛要喷人呢!肿么这么孩子气!有木有!

  3. 头像
    asins Reply #3

    var ie = function(v, p, needle, undef) {
    needle = p.getElementsByTagName('br');
    while(v > 0){
    p.innerHTML = '';
    if(needle[0]) return v;
    }
    return v;
    }(10, document.createElement('p'));

    console.log(ie)
    这是我10年12份写的,

  4. 头像
    yizhl Reply #4

    都太复杂了。。

    if(-[1,]){
    alert("非IE");
    }else{
    alert("IE");
    }

我来说两句