在JavaScript中检测IE版本(v9之前)

如果我们网站的用户正在使用v9之前的Internet Explorer版本,我想将他们弹出到一个错误页面。它只是不值得我们的时间和金钱来支持IE pre-v9。所有其他非ie浏览器的用户都没问题,不应该被弹出。以下是提议的代码:

if(navigator.appName.indexOf("Internet Explorer")!=-1){     //yeah, he's using IE
var badBrowser=(
navigator.appVersion.indexOf("MSIE 9")==-1 &&   //v9 is ok
navigator.appVersion.indexOf("MSIE 1")==-1  //v10, 11, 12, etc. is fine too
);


if(badBrowser){
// navigate to error page
}
}

这段代码能行吗?

为了阻止一些可能会出现在我面前的评论:

  1. 是的,我知道用户可以伪造他们的useragent字符串。我不担心。
  2. 是的,我知道编程专家更喜欢发现功能支持而不是浏览器类型,但我觉得这种方法在这种情况下没有意义。我已经知道所有(相关的)非ie浏览器都支持我需要的功能,而所有pre-v9 IE浏览器都不支持。在整个网站中逐个检查功能将是一种浪费。
  3. 是的,我知道有人试图使用IE v1(或>= 20)访问该网站不会得到'badBrowser'设置为真,警告页面不会正确显示。我们愿意冒这个险。
  4. 是的,我知道微软有“条件注释”,可以用于精确的浏览器版本检测。IE从IE 10开始不再支持条件注释,使得这种方法完全无用。

还有其他明显需要注意的问题吗?

388134 次浏览

你的代码可以做检查,但正如你所认为的,如果有人试图使用IE v1或> v19访问你的页面将不会得到错误,所以可能更安全的做检查的Regex表达式如下代码:

var userAgent = navigator.userAgent.toLowerCase();
// Test if the browser is IE and check the version number is lower than 9
if (/msie/.test(userAgent) &&
parseFloat((userAgent.match(/.*(?:rv|ie)[\/: ](.+?)([ \);]|$)/) || [])[1]) < 9) {
// Navigate to error page
}

如果没有人添加__abc0方法,而你使用的是正确的浏览器模式,那么你可以用

if (window.attachEvent && !window.addEventListener) {
// "bad" IE
}

. Legacy Internet Explorer and attachEvent (MDN

这是我喜欢的做法。它提供了最大限度的控制。(注意:条件语句仅在IE5 - 9中支持。)

首先正确地设置ie类

<!DOCTYPE html>
<!--[if lt IE 7]> <html class="lt-ie9 lt-ie8 lt-ie7"> <![endif]-->
<!--[if IE 7]>    <html class="lt-ie9 lt-ie8"> <![endif]-->
<!--[if IE 8]>    <html class="lt-ie9"> <![endif]-->
<!--[if gt IE 8]><!--> <html> <!--<![endif]-->
<head>

然后你可以使用CSS来创建样式异常,或者,如果你需要,你可以添加一些简单的JavaScript:

(function ($) {
"use strict";


// Detecting IE
var oldIE;
if ($('html').is('.lt-ie7, .lt-ie8, .lt-ie9')) {
oldIE = true;
}


if (oldIE) {
// Here's your JS for IE..
} else {
// ..And here's the full-fat code for everyone else
}


}(jQuery));

感谢保罗爱尔兰

使用条件注释。您正在尝试检测IE <的用户;9和条件注释将在这些浏览器中工作;在其他浏览器(IE >= 10和非IE)中,注释将被视为正常的HTML注释,这就是它们的本质。

示例HTML:

<!--[if lt IE 9]>
WE DON'T LIKE YOUR BROWSER
<![endif]-->

如果你需要,你也可以用脚本来完成:

var div = document.createElement("div");
div.innerHTML = "<!--[if lt IE 9]><i></i><![endif]-->";
var isIeLessThan9 = (div.getElementsByTagName("i").length == 1);
if (isIeLessThan9) {
alert("WE DON'T LIKE YOUR BROWSER");
}

这对我很有用。我用它来重定向到一个页面,解释为什么我们不喜欢<IE9和提供链接到我们喜欢的浏览器。

<!--[if lt IE 9]>
<meta http-equiv="refresh" content="0;URL=http://google.com">
<![endif]-->

返回IE版本,否则返回false

function isIE () {
var myNav = navigator.userAgent.toLowerCase();
return (myNav.indexOf('msie') != -1) ? parseInt(myNav.split('msie')[1]) : false;
}

例子:

if (isIE () == 8) {
// IE8 code
} else {
// Other versions IE or not IE
}

if (isIE () && isIE () < 9) {
// is IE version less than 9
} else {
// is IE 9 and later or not IE
}

if (isIE()) {
// is IE
} else {
// Other browser
}

在JS中使用条件注释检测IE

// ----------------------------------------------------------
// 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;


}());

轻松检测MSIE (v6 - v7 - v8 - v9 - v10 - v11):

if (navigator.userAgent.indexOf('MSIE') !== -1 || navigator.appVersion.indexOf('Trident/') > 0) {
// MSIE
}
var Browser = new function () {
var self = this;
var nav = navigator.userAgent.toLowerCase();
if (nav.indexOf('msie') != -1) {
self.ie = {
version: toFloat(nav.split('msie')[1])
};
};
};




if(Browser.ie && Browser.ie.version > 9)
{
// do something
}

我发现用于检查IE版本的最全面的JS脚本是http://www.pinlady.net/PluginDetect/IE/。整个库位于http://www.pinlady.net/PluginDetect/Browsers/

在IE10中,不再支持条件语句。

在IE11中,用户代理不再包含MSIE。此外,使用用户代理是不可靠的,因为它可以被修改。

使用PluginDetect JS脚本,您可以检测IE,并通过使用针对特定IE版本的非常特定和精心制作的代码来检测准确的版本。当您非常关心您正在使用的浏览器版本时,这是非常有用的。

对于ie 10和11:

你可以使用js并在html中添加一个类来维持有条件的评论的标准:

  var ua = navigator.userAgent,
doc = document.documentElement;


if ((ua.match(/MSIE 10.0/i))) {
doc.className = doc.className + " ie10";


} else if((ua.match(/rv:11.0/i))){
doc.className = doc.className + " ie11";
}

或者使用像bowser这样的库:

https://github.com/ded/bowser

或者modernizr用于特征检测:

http://modernizr.com/

根据微软,以下是最好的解决方案,它也很简单:

function getInternetExplorerVersion()
// Returns the version of Internet Explorer or a -1
// (indicating the use of another browser).
{
var rv = -1; // Return value assumes failure.
if (navigator.appName == 'Microsoft Internet Explorer')
{
var ua = navigator.userAgent;
var re  = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");
if (re.exec(ua) != null)
rv = parseFloat( RegExp.$1 );
}
return rv;
}


function checkVersion()
{
var msg = "You're not using Internet Explorer.";
var ver = getInternetExplorerVersion();


if ( ver > -1 )
{
if ( ver >= 8.0 )
msg = "You're using a recent copy of Internet Explorer."
else
msg = "You should upgrade your copy of Internet Explorer.";
}
alert( msg );
}

此函数将返回IE主版本号为整数,如果浏览器不是Internet Explorer,则返回undefined。像所有用户代理解决方案一样,这很容易受到用户代理欺骗(这是IE版本8以来的官方功能)。

function getIEVersion() {
var match = navigator.userAgent.match(/(?:MSIE |Trident\/.*; rv:)(\d+)/);
return match ? parseInt(match[1]) : undefined;
}

我意识到我在这里有点晚了,但我一直在检查一个简单的一行方式来提供关于浏览器是否是IE以及从10个版本开始是哪个版本的反馈。我还没有为版本11编写代码,因此可能需要对此进行一些修改。

然而,这是代码,它作为一个对象,具有一个属性和一个方法,并依赖于对象检测,而不是抓取导航器对象(这是巨大的缺陷,因为它可以被欺骗)。

var isIE = { browser:/*@cc_on!@*/false, detectedVersion: function () { return (typeof window.atob !== "undefined") ? 10 : (typeof document.addEventListener !== "undefined") ? 9 : (typeof document.querySelector !== "undefined") ? 8 : (typeof window.XMLHttpRequest !== "undefined") ? 7 : (typeof document.compatMode !== "undefined") ? 6 : 5; } };

它的用法是isIE.browser,一个返回布尔值的属性,并依赖于isIE.detectedVersion()方法的条件注释,该方法返回5到10之间的数字。我的假设是,任何低于6的东西,你都是在严肃的老派领域,你会比一条线更强壮,任何高于10的东西,你都是在更新的领域。我读过一些关于IE11不支持条件注释的东西,但我还没有完全调查,这可能是以后的事情。

无论如何,就像它一样,对于一行程序,它将涵盖IE浏览器和版本检测的基础知识。它远非完美,但它很小,很容易修改。

仅供参考,如果有人对如何实际实现这一点有任何疑问,那么下面的条件应该会有所帮助。

var isIE = { browser:/*@cc_on!@*/false, detectedVersion: function () { return (typeof window.atob !== "undefined") ? 10 : (typeof document.addEventListener !== "undefined") ? 9 : (typeof document.querySelector !== "undefined") ? 8 : (typeof window.XMLHttpRequest !== "undefined") ? 7 : (typeof document.compatMode !== "undefined") ? 6 : 5; } };


/* testing IE */


if (isIE.browser) {
alert("This is an IE browser, with a detected version of : " + isIE.detectedVersion());
}

检测IE及其版本再容易不过了,你所需要的只是一点原生/香草Javascript:

var uA = navigator.userAgent;
var browser = null;
var ieVersion = null;


if (uA.indexOf('MSIE 6') >= 0) {
browser = 'IE';
ieVersion = 6;
}
if (uA.indexOf('MSIE 7') >= 0) {
browser = 'IE';
ieVersion = 7;
}
if (document.documentMode) { // as of IE8
browser = 'IE';
ieVersion = document.documentMode;
}

下面是一种用法:

if (browser == 'IE' && ieVersion <= 9)
document.documentElement.className += ' ie9-';

适用于所有IE版本,包括低兼容性视图/模式下的更高版本,并且documentMode是IE专有的。

为了可靠地过滤IE8及更老版本,可以使用检查全局对象:

if (document.all && !document.addEventListener) {
alert('IE8 or lower');
}

要检测Internet Explorer 10|11,你可以在body标签后立即使用这个小脚本:

在我的情况下,我使用jQuery库加载头部。

<!DOCTYPE HTML>
<html>
<head>
<script src="//code.jquery.com/jquery-1.11.0.min.js"></script>
</head>
<body>
<script>if (navigator.appVersion.indexOf('Trident/') != -1) $("body").addClass("ie10");</script>
</body>
</html>

使用特征检测来检测IE版本(IE6+,在IE6之前的浏览器被检测为6,非IE浏览器返回null):

var ie = (function (){
if (window.ActiveXObject === undefined) return null; //Not IE
if (!window.XMLHttpRequest) return 6;
if (!document.querySelector) return 7;
if (!document.addEventListener) return 8;
if (!window.atob) return 9;
if (!document.__proto__) return 10;
return 11;
})();

编辑:为了方便,我已经创建了一个bower/npm repo: ie版本

更新:

更紧凑的版本可以写成一行:

return window.ActiveXObject === undefined ? null : !window.XMLHttpRequest ? 6 : !document.querySelector ? 7 : !document.addEventListener ? 8 : !window.atob ? 9 : !document.__proto__ ? 10 : 11;

微软参考页中所述,IE版本10不再支持条件注释。

.
var ieDetector = function() {
var browser = { // browser object


verIE: null,
docModeIE: null,
verIEtrue: null,
verIE_ua: null


},
tmp;


tmp = document.documentMode;
try {
document.documentMode = "";
} catch (e) {};


browser.isIE = typeof document.documentMode == "number" || eval("/*@cc_on!@*/!1");
try {
document.documentMode = tmp;
} catch (e) {};


// We only let IE run this code.
if (browser.isIE) {
browser.verIE_ua =
(/^(?:.*?[^a-zA-Z])??(?:MSIE|rv\s*\:)\s*(\d+\.?\d*)/i).test(navigator.userAgent || "") ?
parseFloat(RegExp.$1, 10) : null;


var e, verTrueFloat, x,
obj = document.createElement("div"),


CLASSID = [
"{45EA75A0-A269-11D1-B5BF-0000F8051515}", // Internet Explorer Help
"{3AF36230-A269-11D1-B5BF-0000F8051515}", // Offline Browsing Pack
"{89820200-ECBD-11CF-8B85-00AA005B4383}"
];


try {
obj.style.behavior = "url(#default#clientcaps)"
} catch (e) {};


for (x = 0; x < CLASSID.length; x++) {
try {
browser.verIEtrue = obj.getComponentVersion(CLASSID[x], "componentid").replace(/,/g, ".");
} catch (e) {};


if (browser.verIEtrue) break;


};
verTrueFloat = parseFloat(browser.verIEtrue || "0", 10);
browser.docModeIE = document.documentMode ||
((/back/i).test(document.compatMode || "") ? 5 : verTrueFloat) ||
browser.verIE_ua;
browser.verIE = verTrueFloat || browser.docModeIE;
};


return {
isIE: browser.isIE,
Version: browser.verIE
};


}();


document.write('isIE: ' + ieDetector.isIE + "<br />");
document.write('IE Version Number: ' + ieDetector.Version);

然后使用:

if((ieDetector.isIE) && (ieDetector.Version <= 9))
{


}

如果你需要删除IE浏览器版本,那么你可以按照下面的代码。这段代码适用于IE6到IE11版本

<!DOCTYPE html>
<html>
<body>


<p>Click on Try button to check IE Browser version.</p>


<button onclick="getInternetExplorerVersion()">Try it</button>


<p id="demo"></p>


<script>
function getInternetExplorerVersion() {
var ua = window.navigator.userAgent;
var msie = ua.indexOf("MSIE ");
var rv = -1;


if (msie > 0 || !!navigator.userAgent.match(/Trident.*rv\:11\./))      // If Internet Explorer, return version number
{
if (isNaN(parseInt(ua.substring(msie + 5, ua.indexOf(".", msie))))) {
//For IE 11 >
if (navigator.appName == 'Netscape') {
var ua = navigator.userAgent;
var re = new RegExp("Trident/.*rv:([0-9]{1,}[\.0-9]{0,})");
if (re.exec(ua) != null) {
rv = parseFloat(RegExp.$1);
alert(rv);
}
}
else {
alert('otherbrowser');
}
}
else {
//For < IE11
alert(parseInt(ua.substring(msie + 5, ua.indexOf(".", msie))));
}
return false;
}}
</script>


</body>
</html>

使用JQuery:

http://tanalin.com/en/articles/ie-version-js/

使用c#:

var browser = Request.Browser.Browser;

运行IE10的窗口将自动更新到IE11+,并将标准化W3C

现在,我们不需要支持IE8-

    <!DOCTYPE html>
<!--[if lt IE 9]><html class="ie ie8"><![endif]-->
<!--[if IE 9]><html class="ie ie9"><![endif]-->
<!--[if (gt IE 9)|!(IE)]><!--><html><!--<![endif]-->
<head>
...
<!--[if lt IE 8]><meta http-equiv="Refresh" content="0;url=/error-browser.html"><![endif]--
...
</head>

简单的解决方案,停止思考浏览器和使用年。

var year = eval(today.getYear());
if(year < 1900 )
{alert('Good to go: All browsers and IE 9 & >');}
else
{alert('Get with it and upgrade your IE to 9 or >');}
var isIE9OrBelow = function()
{
return /MSIE\s/.test(navigator.userAgent) && parseFloat(navigator.appVersion.split("MSIE")[1]) < 10;
}

我建议不要再重写这段代码了。我建议你使用Conditionizr库(http://conditionizr.com/),它能够测试特定的IE版本以及其他浏览器、操作系统,甚至是否有视网膜显示。

只包含您需要的特定测试的代码,您还可以获得经过多次迭代的测试库的好处(并且很容易升级而不会破坏您的代码)。

它还可以很好地与Modernizr配合,Modernizr可以处理所有情况,在这些情况下,您最好测试特定的功能,而不是特定的浏览器。

下面是AngularJS 检查用于IE的方法

/**
* documentMode is an IE-only property
* http://msdn.microsoft.com/en-us/library/ie/cc196988(v=vs.85).aspx
*/
var msie = document.documentMode;


if (msie < 9) {
// code for IE < 9
}

我喜欢这样:

<script>
function isIE () {
var myNav = navigator.userAgent.toLowerCase();
return (myNav.indexOf('msie') != -1) ? parseInt(myNav.split('msie')[1]) : false;
}
var ua = window.navigator.userAgent;
//Internet Explorer | if | 9-11


if (isIE () == 9) {
alert("Shut down this junk! | IE 9");
} else if (isIE () == 10){
alert("Shut down this junk! | IE 10");
} else if (ua.indexOf("Trident/7.0") > 0) {
alert("Shut down this junk! | IE 11");
}else{
alert("Thank god it's not IE!");
}


</script>

这种检测IE的方法结合了jKey使用条件注释的答案和Owen使用用户代理的答案的优点,并避免了它们的缺点。

  • jKey的方法工作到版本9和免疫用户代理欺骗在IE 8 &9.
  • Owen的方法可能会在ie5 &6(报告7),容易受到UA欺骗,但它可以检测到IE版本>= 10(现在也包括12,这是欧文的答案后的日期)。

    // ----------------------------------------------------------
    // A short snippet for detecting versions of IE
    // ----------------------------------------------------------
    // If you're not in IE (or IE version is less than 5) then:
    //     ie === undefined
    // Thus, to detect IE:
    //     if (ie) {}
    // And to detect the version:
    //     ie === 6 // IE6
    //     ie > 7 // IE8, IE9 ...
    // ----------------------------------------------------------
    var ie = (function(){
    var v = 3,
    div = document.createElement('div'),
    all = div.getElementsByTagName('i');
    
    
    while (
    div.innerHTML = '<!--[if gt IE ' + (++v) + ']><i></i><![endif]-->',
    all[0]
    );
    if (v <= 4) { // Check for IE>9 using user agent
    var match = navigator.userAgent.match(/(?:MSIE |Trident\/.*; rv:|Edge\/)(\d+)/);
    v = match ? parseInt(match[1]) : undefined;
    }
    return v;
    }());
    

This can be used to set useful classes to your document containing the IE version:

    if (ie) {
document.documentElement.className += ' ie' + ie;
if (ie < 9)
document.documentElement.className += ' ieLT9';
}

注意,如果IE处于兼容模式,它会检测正在使用的兼容模式。还要注意的是,IE版本主要适用于旧版本(<10);更高的版本更符合标准,使用modernizr.js之类的东西检查功能可能会更好。

if (!document.addEventListener) {
// ie8
} else if (!window.btoa) {
// ie9
}
// others
// Detect ie <= 10
var ie = /MSIE ([0-9]+)/g.exec(window.navigator.userAgent)[1] || undefined;


console.log(ie);
// Return version ie or undefined if not ie or ie > 10

这个问题已经被回答得死去活来了,但你只需要这个。

!!navigator.userAgent.match(/msie\s[5-8]/i)

我为此做了一个方便的下划线混合。

_.isIE();        // Any version of IE?
_.isIE(9);       // IE 9?
_.isIE([7,8,9]); // IE 7, 8 or 9?

.
_.mixin({
isIE: function(mixed) {
if (_.isUndefined(mixed)) {
mixed = [7, 8, 9, 10, 11];
} else if (_.isNumber(mixed)) {
mixed = [mixed];
}
for (var j = 0; j < mixed.length; j++) {
var re;
switch (mixed[j]) {
case 11:
re = /Trident.*rv\:11\./g;
break;
case 10:
re = /MSIE\s10\./g;
break;
case 9:
re = /MSIE\s9\./g;
break;
case 8:
re = /MSIE\s8\./g;
break;
case 7:
re = /MSIE\s7\./g;
break;
}


if (!!window.navigator.userAgent.match(re)) {
return true;
}
}


return false;
}
});


console.log(_.isIE());
console.log(_.isIE([7, 8, 9]));
console.log(_.isIE(11));
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js"></script>

下面的代码依赖标识了所有情况下的IE版本(IE<=9, IE10, IE11和IE/Edge)

function detectIE() {
var ua = window.navigator.userAgent;
var msie = ua.indexOf('MSIE ');
if (msie > 0) {
// IE 10 or older => return version number
return parseInt(ua.substring(msie + 5, ua.indexOf('.', msie)), 10);
}
var trident = ua.indexOf('Trident/');
if (trident > 0) {
// IE 11 => return version number
var rv = ua.indexOf('rv:');
return parseInt(ua.substring(rv + 3, ua.indexOf('.', rv)), 10);
}
var edge = ua.indexOf('Edge/');
if (edge > 0) {
// Edge (IE 12+) => return version number
return parseInt(ua.substring(edge + 5, ua.indexOf('.', edge)), 10);
}
// other browser
return false;
}

裁判:https://codepen.io/gapcode/pen/vEJNZN

不要把这么简单的事情过分复杂化。只需使用一个简单的JScript条件注释。它是最快的,因为它不需要向非IE浏览器添加代码来进行检测,而且它的兼容性可以追溯到支持HTML条件注释之前的IE版本。简而言之,

var IE_version=(-1/*@cc_on,@_jscript_version@*/);

小心小注释:大多数(如果不是全部)会将特殊条件注释误认为常规注释,并将其删除

基本上,上面的代码将IE_version的值设置为您正在使用的IE版本,或者-1(如果您没有使用IE)。现场演示:

var IE_version=(-1/*@cc_on,@_jscript_version@*/);
if (IE_version!==-1){
document.write("<h1>You are using Internet Explorer " + IE_version + "</h1>");
} else {
document.write("<h1>You are not using a version of Internet Explorer less than 11</h1>");
}

这是基于条件注释只在旧版本的Internet Explorer中可见的事实,而IE将@_jscript_version设置为浏览器的版本。例如,如果你使用的是Internet Explorer 7,那么@_jscript_version将被设置为7,因此,将要执行的后处理javascript实际上是这样的:

var IE_version=(-1,7);

结果是7。

它帮助了我

function IsIE8Browser() {
var rv = -1;
var ua = navigator.userAgent;
var re = new RegExp("Trident\/([0-9]{1,}[\.0-9]{0,})");
if (re.exec(ua) != null) {
rv = parseFloat(RegExp.$1);
}
return (rv == 4);
}
function getIEVersion(){
if (/MSIE |Trident\//.test( navigator.userAgent )=== false) return -1;
/**[IE <=9]*/
var isIE9L = typeof ( window.attachEvent ) === 'function' && !( Object.prototype.toString.call( window.opera ) == '[object Opera]' ) ? true : false;
var re;
if(isIE9L){
re = new RegExp( "MSIE ([0-9]{1,}[\.0-9]{0,})" );
if(re.exec( navigator.userAgent ) !== null)
return parseFloat( RegExp.$1 );
return -1;
}
/**[/IE <=9]*/
/** [IE >= 10]*/
if(navigator.userAgent.indexOf( 'Trident/' ) > -1){
re = new RegExp( "rv:([0-9]{1,}[\.0-9]{0,})" );
if(re.exec( navigator.userAgent ) !== null)
return parseFloat( RegExp.$1 );
return -1;
}
/**[/IE >= 10]*/
return -1;
};

点击这里==>

var ieVersion = getIEVersion();


if(ieVersion < 0){
//Not IE
}
//A version of IE
了解更多关于浏览器导航器的信息 https://developer.mozilla.org/en-US/docs/Web/API/Window/navigator < / p >

或者简单地

//   IE 10: ua = 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)';
//   IE 11: ua = 'Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko';
// Edge 12: ua = 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36 Edge/12.0';
// Edge 13: ua = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2486.0 Safari/537.36 Edge/13.10586';


var isIE = navigator.userAgent.match(/MSIE|Trident|Edge/)
var IEVersion = ((navigator.userAgent.match(/(?:MSIE |Trident.*rv:|Edge\/)(\d+(\.\d+)?)/)) || []) [1]