A bizarre version of the shortest IE judge JS script

  • 2020-03-30 03:05:05
  • OfStack

Use conditional comment to determine the version of IE. Well, it was suggested early on, but without looking at the code. I saw it while watching CSS3 PIE yesterday. I saw Paul Irish mention it today. So, here's a recommendation. This is from the author's blog:


// ----------------------------------------------------------
// A short snippet for detecting versions of IE in JavaScript
// without resorting to user-agent sniffing
// ----------------------------------------------------------
// If you're not in IE (or IE version is less than 5) then:
//     ie === undefined
// If you're in IE (>=5) then you can determine which version:
//     ie === 7; // IE7
// Thus, to detect IE:
//     if (ie) {}
// And to detect the version:
//     ie === 6 // IE6
//     ie > 7 // IE8, IE9 ...
//     ie < 9 // Anything less than IE9
// ----------------------------------------------------------
// UPDATE: Now using Live NodeList idea from @jdalton
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;
}());

Notice this while statement. It's what I find most interesting. For the comma operator. I'm not familiar with it either. I'm just stuck with things like variable definitions. Such as:


var  a= 'b', c = 'd', e = 'f' ; 
var obj = {
 a: 'b',
 c: 'd',
 e: 'f'
}

Asked workmate @kangpangpang and checked the book again. Actually, this is rare. It usually returns the last value.

var a = (1,2,3,5,6,0,9,4); // a === 4

Well, that's about it. It's interesting.


Related articles: