【问题标题】:checking for IE11 in the javascript code在 javascript 代码中检查 IE11
【发布时间】:2015-06-11 04:43:52
【问题描述】:

我正在检查 IE11 的脚本,但以下内容似乎不起作用,它返回错误。

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

它似乎找到了msie

谁能更新这个函数来检测IE11

【问题讨论】:

标签: javascript


【解决方案1】:

不再建议检查特定浏览器 - 功能检测通常更有用。如果确实需要检测 IE11,以下页面在检测 IE x.x 部分下有一个示例脚本:

http://www.javascriptkit.com/javatutors/navigator.shtml

万一以后这个链接消失了,脚本如下:

//userAgent in IE7 WinXP returns: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727)
//userAgent in IE11 Win7 returns: Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko

if (navigator.userAgent.indexOf('MSIE') != -1)
 var detectIEregexp = /MSIE (\d+\.\d+);/ //test for MSIE x.x
else // if no "MSIE" string in userAgent
 var detectIEregexp = /Trident.*rv[ :]*(\d+\.\d+)/ //test for rv:x.x or rv x.x where Trident string exists

if (detectIEregexp.test(navigator.userAgent)){ //if some form of IE
 var ieversion=new Number(RegExp.$1) // capture x.x portion and store as a number
 if (ieversion>=12)
  document.write("You're using IE12 or above")
 else if (ieversion>=11)
  document.write("You're using IE11 or above")
 else if (ieversion>=10)
  document.write("You're using IE10 or above")
 else if (ieversion>=9)
  document.write("You're using IE9 or above")
 else if (ieversion>=8)
  document.write("You're using IE8 or above")
 else if (ieversion>=7)
  document.write("You're using IE7.x")
 else if (ieversion>=6)
  document.write("You're using IE6.x")
 else if (ieversion>=5)
  document.write("You're using IE5.x")
}
else{
 document.write("n/a")
}

所以要替换你的函数,你可以使用类似的东西:

function isIE() {

    if (navigator.userAgent.indexOf('MSIE') != -1)
        return true;

    var detectIEregexp = /Trident.*rv[ :]*(\d+\.\d+)/   
    return detectIEregexp.test(navigator.userAgent);
}

【讨论】:

  • 编辑了答案以包含一个简单的 isIE() 函数。
【解决方案2】:
var myNav = navigator.userAgent;

IE10及以下

myNav.indexOf('MSIE ') != -1

对于 IE11

myNav.indexOf('Trident/') != -1

对于 IE12

myNav.indexOf('Edge/') != -1

你更新后的函数会是这样的

function isIE () {
    var myNav = navigator.userAgent;
    return (myNav.indexOf('MSIE ') != -1 || myNav.indexOf('Trident/') != -1 || myNav.indexOf('Edge/') != -1);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-04
    • 1970-01-01
    • 1970-01-01
    • 2012-12-04
    • 2014-07-22
    • 2014-02-24
    相关资源
    最近更新 更多