Use conditional comment to determine the version of IE. Well, someone proposed it early, but didn't look at the code carefully. I happened to see it when I was watching CSS3 PIE yesterday, and I thought it was unreliable. I also mentioned it today by Paul Irish, so I recommend it. This is written on the author's blog:
The code copy is as follows:
// --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
// 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;
}());
Pay attention to this while statement. It's what I find most interesting. For comma operator. I'm not familiar with it, and I'm just stuck with the usage of variable definitions. for example:
The code copy is as follows:
var a= 'b', c = 'd', e = 'f';
var obj = {
a: 'b',
c: 'd',
e: 'f'
}
I asked my coworker @kangpangpang and checked the book again. Actually, this is relatively rare. Usually the last value is returned.
The code copy is as follows:
var a = (1,2,3,5,6,0,9,4); // a === 4
Well, that's probably it. Very interesting.