如何使用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!!'); }