我看了很多,我知道有很多方法可以检测internet explorer。
我的问题是:我的HTML文档上有一个区域,当单击该区域时,会调用一个与任何类型的internet explorer都不兼容的JavaScript函数。我想要检测是否正在使用IE,如果是,将变量设置为true。
问题是,我的代码是用Notepad++编写的,当我在浏览器中运行代码时,检测IE的方法都不起作用。我认为问题在于我在Notepad++上运行它。我需要能够检测IE,以便基于变量,我可以禁用该网站的区域。我已经尝试过了:
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';
}
}
但它不起作用。如何检测Notepad++中的IE?这就是我要测试HTML的原因,但我需要一个可以使用它的方法。
编辑
我注意到有人把这个标记为复制品,这是可以理解的。我想我说得不太清楚。我不能使用JQuery答案,所以这不是重复的,因为我要求的是普通的JS答案。
编辑#2
是否也有检测Microsoft Edge浏览器的方法?
发布于 2015-08-20 08:45:14
我不知道为什么,但是我没有像其他人所说的那样在userAgent中看到“边缘”,所以我不得不走另一条可能对一些人有帮助的路线。
我没有看navigator.userAgent,而是看了看navigator.appName来区分它是IE<=10还是IE11和Edge。IE11和Edge使用"Netscape“的appName,而其他迭代使用"Microsoft Internet Explorer”。
在我们确定浏览器是IE11或Edge之后,我查看了navigator.appVersion。我注意到在IE11中,字符串相当长,其中包含大量信息。我随心所欲地挑出了“三叉叉”这个词,这个词肯定不在Edge的navigator.appVersion中。通过测试这个单词,我可以区分这两个单词。
下面是一个函数,它将返回用户所在的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;
}
发布于 2015-08-01 11:42:54
以下是我所知道的检查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和边缘用户代理字符串,因为此答案在某些时候可能会过时:https://msdn.microsoft.com/en-us/library/hh869301%28v=vs.85%29.aspx
发布于 2015-09-23 23:20:35
我正在使用UAParser https://github.com/faisalman/ua-parser-js
var a = new UAParser();
var name = a.getResult().browser.name;
var version = a.getResult().browser.version;
https://stackoverflow.com/questions/31757852
复制相似问题