如何使用JavaScript检测Internet Explorer(IE)和Microsoft Edge?

我看了很多,我知道有很多方法来检测Internet Explorer。 我的问题是这样的:我在我的HTML文档上有一个区域,点击时调用与任何types的Internet Explorer不兼容的JavaScript函数。 我希望检测IE是否被使用,如果是,请将variables设置为true。 问题是,我正在写我的代码记事本+ +,当我在浏览器中运行HTML代码,没有任何方法来检测IE炒锅。 我认为问题在于我正在使用记事本++。 我需要能够检测到的IE,所以基于这个variables,我可以禁用该网站的区域。 我试过这个:

/* Write JavaScript here */ var isIE10 = false; if (navigator.userAgent.indexOf("MSIE 10") > -1) { // this is internet explorer 10 isIE10 = true; window.alert(isIE10); } var isIE = (navigator.userAgent.indexOf("MSIE") != -1); if(isIE){ if(!isIE10){ window.location = 'pages/core/ie.htm'; } } 

但它不起作用。 我如何检测记事本++的IE浏览器? 这就是我testing的HTML,但我需要一个方法,可以在网站上使用。 帮帮我!

编辑

我注意到有人把这个标记为重复的,这是可以理解的。 我想我不清楚。 我不能使用JQuery的答案,所以这是不重复的,因为我要求一个香草JS答案。

编辑#2还有一种方法来检测边缘浏览器?

我不知道为什么,但是我没有像其他人所说的那样在userAgent中看到“边缘”,所以我不得不采取另一条路线来帮助一些人。

而不是看着navigator.userAgent,我看着navigator.appName,以区分是否IE <= 10或IE11和边缘。 IE11和Edge使用“Netscape”的appName,而其他每个迭代使用“Microsoft Internet Explorer”。

在确定浏览器是IE11或Edge之后,我查看navigator.appVersion。 我注意到,在IE11中,string相当长,里面有很多信息。 我任意select了“三叉戟”这个词,这绝对不是在导航器中的Edge.app版本。 testing这个词让我区分这两个。

下面是一个函数,将返回用户所在的Internet Explorer的数值。 如果在Microsoft Edge上,则返回数字12。

祝你好运,我希望这有助于!

 function Check_Version(){ var rv = -1; // Return value assumes failure. if (navigator.appName == 'Microsoft Internet Explorer'){ var ua = navigator.userAgent, re = new RegExp("MSIE ([0-9]{1,}[\\.0-9]{0,})"); if (re.exec(ua) !== null){ rv = parseFloat( RegExp.$1 ); } } else if(navigator.appName == "Netscape"){ /// in IE 11 the navigator.appVersion says 'trident' /// in Edge the navigator.appVersion does not say trident if(navigator.appVersion.indexOf('Trident') === -1) rv = 12; else rv = 11; } return rv; } 

以下是我知道如何检查IE和Edge的最新正确方法:

 if (/MSIE 10/i.test(navigator.userAgent)) { // This is internet explorer 10 window.alert('isIE10'); } if (/MSIE 9/i.test(navigator.userAgent) || /rv:11.0/i.test(navigator.userAgent)) { // This is internet explorer 9 or 11 window.location = 'pages/core/ie.htm'; } if (/Edge\/\d./i.test(navigator.userAgent)){ // This is Microsoft Edge window.alert('Microsoft Edge'); } 

请注意,您的代码中不需要额外的var isIE10,因为它现在执行了非常具体的检查。

还请查看此页面以获取最新的IE和Edge用户代理string,因为此答案在某些时候可能会过时: https : //msdn.microsoft.com/en-us/library/hh869301%28v=vs.85%29。 ASPX

主题有点旧,但是由于这里的脚本检测到Firefox是一个误报(EDGE v12),下面是我使用的版本:

 function isIEorEDGE(){ if (navigator.appName == 'Microsoft Internet Explorer'){ return true; // IE } else if(navigator.appName == "Netscape"){ return navigator.appVersion.indexOf('Edge') > -1; // EDGE } return false; } 

这当然可以用更简洁的方式写出来:

 function isIEorEDGE(){ return navigator.appName == 'Microsoft Internet Explorer' || (navigator.appName == "Netscape" && navigator.appVersion.indexOf('Edge') > -1); } 

我正在使用UAParser https://github.com/faisalman/ua-parser-js

 var a = new UAParser(); var name = a.getResult().browser.name; var version = a.getResult().browser.version; 

使用这个snip: var IE = (navigator.userAgent.indexOf("Edge") > -1 || navigator.userAgent.indexOf("Trident/7.0") > -1) ? true : false; var IE = (navigator.userAgent.indexOf("Edge") > -1 || navigator.userAgent.indexOf("Trident/7.0") > -1) ? true : false;

对我来说更好的是:

 var uA = window.navigator.userAgent, onlyIEorEdge = /msie\s|trident\/|edge\//i.test(uA) && !!( document.uniqueID || window.MSInputMethodContext), checkVersion = (onlyIEorEdge && +(/(edge\/|rv:|msie\s)([\d.]+)/i.exec(uA)[2])) || NaN; 

运行: http : //output.jsbin.com/solicul/1/ o http://jsfiddle.net/Webnewbie/apa1nvu8/

这个function对我来说非常合适。 它也检测Edge。

最初来自这个Codepen:

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

 /** * detect IE * returns version of IE or false, if browser is not Internet Explorer */ function detectIE() { var ua = window.navigator.userAgent; // Test values; Uncomment to check result … // 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 (Spartan) // 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 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; } 

然后你可以在代码中使用if (detectIE()) { /* do IE stuff */ }

 // detect IE8 and above, and Edge if (document.documentMode || /Edge/.test(navigator.userAgent)) { ... do something } 

说明:

 document.documentMode 

一个IE浏览器唯一的财产,首先在IE8中可用。

 /Edge/ 

一个正则expression式来searchstring'Edge' – 然后我们testing'navigator.userAgent'属性

如果你只是想给用户一个MS浏览器的警告或什么的,这个代码应该是好的。

HTML:

 <p id="IE">You are not using a microsoft browser</p> 

使用Javascript:

 using_ms_browser = navigator.appName == 'Microsoft Internet Explorer' || (navigator.appName == "Netscape" && navigator.appVersion.indexOf('Edge') > -1) || (navigator.appName == "Netscape" && navigator.appVersion.indexOf('Trident') > -1); if (using_ms_browser == true){ document.getElementById('IE').innerHTML = "You are using a MS browser" } 

感谢@GavinoGrifoni

这里是一个JavaScript类,检测IE10,IE11和边缘。
导航器对象被注入用于testing目的。

 var DeviceHelper = function (_navigator) { this.navigator = _navigator || navigator; }; DeviceHelper.prototype.isIE = function() { if(!this.navigator.userAgent) { return false; } var IE10 = Boolean(this.navigator.userAgent.match(/(MSIE)/i)), IE11 = Boolean(this.navigator.userAgent.match(/(Trident)/i)); return IE10 || IE11; }; DeviceHelper.prototype.isEdge = function() { return !!this.navigator.userAgent && this.navigator.userAgent.indexOf("Edge") > -1; }; DeviceHelper.prototype.isMicrosoftBrowser = function() { return this.isEdge() || this.isIE(); }; 

首先它肯定不是Notepad ++的问题。 它的你的“ string匹配问题

所有IE版本中的常用string是MSIE查看http://www.useragentstring.com/pages/Internet%20Explorer/上的各种userAgentstring

 if(navigator.userAgent.indexOf("MSIE") != -1){ alert('I am Internet Explorer!!'); }