Skip to content

Instantly share code, notes, and snippets.

@anhr
Forked from jalbertbowden/ie-6-9-detect.js
Last active August 29, 2015 14:26
Show Gist options
  • Save anhr/cfe85a8c014f5847d2d0 to your computer and use it in GitHub Desktop.
Save anhr/cfe85a8c014f5847d2d0 to your computer and use it in GitHub Desktop.
JavaScript IE Version Detection, IE6-10 and IE Mobile
// ----------------------------------------------------------
// 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(){
if (/*@cc_on!@*/true) return undef;
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;
}());
@anhr
Copy link
Author

anhr commented Aug 4, 2015

Sometimes I see "Unable to get property '1' of undefined or null reference" because
/IEMobile/(\d+.?(\d+)?)/.exec( navigator.userAgent ) is null
if "IEMobile" string is not exists in the navigator.userAgent.
I have used a code below for resolving of problem:

var ieMobile = /IEMobile/(\d+.?(\d+)?)/.exec( navigator.userAgent );
ieMobile = ( !! window.ActiveXObject && ieMobile && (ieMobile.length >= 2) && +( ieMobile[1] ) ) || NaN;

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment