检查用户是否正在使用IE


390

我通过单击具有特定类的div来调用下面的函数。

有没有一种方法可以在启动功能时检查用户是否正在使用Internet Explorer,并在用户使用其他浏览器时中止/取消该功能,以便仅为IE用户运行?这里的用户都将使用IE8或更高版本,因此我不需要介绍IE7和更低版本。

如果我能告诉他们使用的是哪种浏览器,那很好,但这不是必需的。

示例功能:

$('.myClass').on('click', function(event)
{
    // my function
});

1
使用现代化工具检测IE或其他浏览器。 stackoverflow.com/questions/13478303/...
克里斯-

7
按照现代Web开发标准,从一开始就开发IE的旧版本是不好的做法。
Rosseyn

7
实际上,这种“不好的做法”是由标准本身强制执行的,因此这不是开发人员的错...浏览器的工作方式不同,并且规范在实现问题上过于柔和。为了使东西是不是越野车,而不是无聊得要命一个具有做浏览器检测。我建议其他最佳做法:With modern web development, it's bad practice to support non-Chromium-based browsers (with Safari not considered to be Chromium-based at all)。抱歉,这种疯狂必须在某种程度上以某种方式结束...
user2173353

2
今天,“浏览器检测”比“浏览器检测”更好。询问浏览器是否满足您的需求。
克里斯·罗杰斯

2
@Chris-道歉...意味着要有更多的调子语调。我要怪IE窃取了我的快乐,并给我留下了痛苦和沮丧。:)
JDB仍记得Monica

Answers:


477

使用以下JavaScript方法:

function msieversion() 
{
    var ua = window.navigator.userAgent;
    var msie = ua.indexOf("MSIE ");

    if (msie > 0) // If Internet Explorer, return version number
    {
        alert(parseInt(ua.substring(msie + 5, ua.indexOf(".", msie))));
    }
    else  // If another browser, return 0
    {
        alert('otherbrowser');
    }

    return false;
}

您可以在下面的Microsoft支持网站上找到详细信息:

如何通过脚本确定浏览器版本

更新:(IE 11支持)

function msieversion() {

    var ua = window.navigator.userAgent;
    var msie = ua.indexOf("MSIE ");

    if (msie > 0 || !!navigator.userAgent.match(/Trident.*rv\:11\./))  // If Internet Explorer, return version number
    {
        alert(parseInt(ua.substring(msie + 5, ua.indexOf(".", msie))));
    }
    else  // If another browser, return 0
    {
        alert('otherbrowser');
    }

    return false;
}

27
尽管这很有效,因为ua变量永远不会以MSIE开头,但是编写if (msie > 0)具有误导性。如果找不到该值,则indexOf()函数将返回-1而不是0。因此,if (msie > -1)这将更具解释性。
内维尔·纳泽拉内

61
对我来说,这将返回IE11中的NaN。
verism 2014年

7
@verism及其他人:请检查以下答案是否也适用IE 11stackoverflow.com/a/21712356/114029
Leniel Maccaferri 2014年

8
navigator.userAgent.indexOf(“ MSIE”)> 0 || navigator.userAgent.indexOf(“ Trident”)> 0 || navigator.userAgent.indexOf(“ Edge”)> 0
tylermauthe 2015年

12
/Edge\/|Trident\/|MSIE /.test(window.navigator.userAgent)我知道这适用于10和11。如果您可以验证<IE9和Edge,请编辑答案。
Indolering

595

几年后,Edge浏览器现在使用Chromium作为其渲染引擎。
可悲的是,检查IE 11仍然是一件事情。

这是一种更直接的方法,因为应该删除IE的旧版本。

if (window.document.documentMode) {
  // Do IE stuff
}

这是我的旧答案(2014年):

在Edge中,用户代理字符串已更改。

/**
 * detect IEEdge
 * returns version of IE/Edge or false, if browser is not a Microsoft browser
 */
function detectIEEdge() {
    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 => return version number
       return parseInt(ua.substring(edge + 5, ua.indexOf('.', edge)), 10);
    }

    // other browser
    return false;
}

用法示例:

alert('IEEdge ' + detectIEEdge());

IE 10的默认字符串:

Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)

IE 11的默认字符串:

Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko 

Edge 12的默认字符串:

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的默认字符串(thx @DrCord):

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 

Edge 14的默认字符串:

Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2486.0 Safari/537.36 Edge/14.14300 

Edge 15的默认字符串:

Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36 Edge/15.15063 

Edge 16的默认字符串:

Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 Edge/16.16299 

Edge 17的默认字符串:

Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36 Edge/17.17134 

Edge 18的默认字符串(Insider预览):

Mozilla/5.0 (Windows NT 10.0; Win64; x64; ServiceUI 14) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36 Edge/18.17730 

在CodePen上测试:

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


4
感谢您的评论。我尚未验证您的答案,但是我想评论一件事:由于第一个“ if”包含“ return”,因此您以后不需要“ else”。
Mario 2014年

30
只是好奇,为什么他们要在新版本的IE中更改用户代理行?MS严重不希望我们检测到其糟糕的Web浏览器。
c00000fd

3
@SameerAlibhai在理论上听起来不错,但在实践中,尤其是当前,这是不实际的。有时会出现一个问题,即单个“功能”检测不包括在内,并且某些功能还具有一些实施怪癖,这些怪癖只能通过了解浏览器来解决。如果我想做一些简单的事情,例如收集浏览器统计信息,该怎么办?
2015年

34
应当指出,Edge并不是真正的“ IE12”,但实际上是一个完全独立的浏览器。Windows 10同时安装了IE11和Edge。
moloko

16
我对IE的仇恨与日俱增
Kolob Canyon

135

如果您只想知道浏览器是否是IE,则可以执行以下操作:

var isIE = false;
var ua = window.navigator.userAgent;
var old_ie = ua.indexOf('MSIE ');
var new_ie = ua.indexOf('Trident/');

if ((old_ie > -1) || (new_ie > -1)) {
    isIE = true;
}

if ( isIE ) {
    //IE specific code goes here
}

更新1:更好的方法

我现在推荐这个。它仍然非常易读,并且代码少得多:)

var ua = window.navigator.userAgent;
var isIE = /MSIE|Trident/.test(ua);

if ( isIE ) {
  //IE specific code goes here
}

感谢JohnnyFun在简短回答中的评论:)

更新2:在CSS中测试IE

首先,如果可以的话,应该使用@supports语句而不是JS来检查浏览器是否支持某些CSS功能。

.element {
  /* styles for all browsers */
}

@supports (display: grid) {
  .element {
    /* styles for browsers that support display: grid */
  }
}

(请注意,IE根本不支持@supports,并且会忽略放置在@supports语句中的任何样式。)

如果无法解决问题,@supports则可以执行以下操作:

// JS

var ua = window.navigator.userAgent;
var isIE = /MSIE|Trident/.test(ua);

if ( isIE ) {
  document.documentElement.classList.add('ie')
}
/* CSS */

.element {
  /* styles that apply everywhere */
}

.ie .element {
  /* styles that only apply in IE */
}

(注意:classList对于JS来说,它相对较新,我认为,在IE浏览器中,它仅适用于IE11。可能也是IE10。)

如果您在项目中使用SCSS(Sass),则可以简化为:

/* SCSS (Sass) */

.element {
  /* styles that apply everywhere */

  .ie & {
    /* styles that only apply in IE */
  }
}

更新3:添加Microsoft Edge(不推荐)

如果您还想将Microsoft Edge添加到列表中,则可以执行以下操作。但是我不推荐它,因为Edge是比IE更强大的浏览器。

var ua = window.navigator.userAgent;
var isIE = /MSIE|Trident|Edge\//.test(ua);

if ( isIE ) {
  //IE & Edge specific code goes here
}

5
或相同的字节数:ms_ie =〜ua.indexOf('MSIE')|| 〜ua.indexOf('Trident /'); ;-)
Simon Steinberger 2014年

12
尽管对于人类而言,我的版本具有更直接的意义,但是字节数少总是件好事:)
Daniel Tonon 2014年

7
ms_ie = !!ua.match(/MSIE|Trident/)
xori 2015年

5
或ms_ie = /MSIE|Trident/.test(ua)–
JohnnyFun

1
@SimonSteinberger ~有什么意义吗?
1.21吉瓦

45

true对于任何版本的Internet Explorer,都会返回以下内容:

function isIE(userAgent) {
  userAgent = userAgent || navigator.userAgent;
  return userAgent.indexOf("MSIE ") > -1 || userAgent.indexOf("Trident/") > -1 || userAgent.indexOf("Edge/") > -1;
}

userAgent参数是可选的,默认为浏览器的用户代理。


这应该很好,但是您基本上只是忘记为IE浏览器设置默认的“返回true”或“返回1”值。当检测到IE浏览器时,当前不返回任何值。
文森特·爱德华·加德里亚·比努阿,2015年

10
为什么要将Edge视为IE?在兼容性方面,如今它们很少有共同之处。
minexew '16

@docta_faustus userAgent是一个参数,而不是全局参数
bentytree '17

29

Angularjs团队就是这样做的(1.6.5版):

var msie, // holds major version number for IE, or NaN if UA is not IE.

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

然后有几行代码分散在整个代码中,例如

if (event === 'input' && msie <= 11) return false;

if (enabled && msie < 8) {

在MS Edge中未定义window.document.documentMode
Veselin Vasilev

25
在MS Edge中未定义,因为MS Edge不是IE!
JCKödel

1
document.documentModeIE8 +支持。这将是'undefined'对边缘或Chrome / FireFox中...。我将这段代码更改var IEver = window.document.documentMode || (window.attachEvent? 1 : 99);为:对于IE8 +,它返回确切的IE版本,对于非IE浏览器(通常是现代浏览器)返回99,对于旧的IE5-7,返回1。之所以这样写,是因为我们通常只需要对某些较旧的IE进行特殊工作。因此,这if (IEver < 9) { ... }意味着如果它是旧的IE
S.Serpooshan

29

您可以使用navigator对象检测用户navigator,而无需使用jquery

<script type="text/javascript">

if (/MSIE (\d+\.\d+);/.test(navigator.userAgent) || navigator.userAgent.indexOf("Trident/") > -1 ){ 

 // Do stuff with Internet-Exploders ... :)
}

</script>

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


4
这给了我假我IE11
柯蒂斯

2
IE11的用户代理与MSIE(XX)不同;通过检查Trident可以找到IE11。
Orpheus

这在Firefox 45.0.2中给出了误报。
Tim S. Van Haren

错误的测试indexOf不要像测试函数regex一样返回true或false navigator.userAgent.indexOf(“ Trident /”)!= -1
Dahar Youssef

10

使用以上答案;简单且精简的返回布尔值:

var isIE = /(MSIE|Trident\/|Edge\/)/i.test(navigator.userAgent);


1
在Widnows 10上的FireFox 44.0.2中返回false。哪个版本的FireFox返回true @ SiKni8?
亚瑟·赫伯特

9

方法01:
$ .browser在jQuery 1.3版中已弃用,在1.9版中已删除

if ( $.browser.msie) {
  alert( "Hello! This is IE." );
}

方法02:
使用条件注释

<!--[if gte IE 8]>
<p>You're using a recent version of Internet Explorer.</p>
<![endif]-->

<!--[if lt IE 7]>
<p>Hm. You should upgrade your copy of Internet Explorer.</p>
<![endif]-->

<![if !IE]>
<p>You're not using Internet Explorer.</p>
<![endif]>

方法03:

 /**
 * Returns the version of Internet Explorer or a -1
 * (indicating the use of another browser).
 */
function getInternetExplorerVersion()
{
    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 );
}

方法04:
使用JavaScript /手动检测

/*
     Internet Explorer sniffer code to add class to body tag for IE version.
     Can be removed if your using something like Modernizr.
 */
 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]);

     //append class to body for use with browser support
     if (v > 4)
     {
         $('body').addClass('ie' + v);
     }

 }());

参考链接


@radhe我已经更新了答案,希望这对您有用。
Aamir Shahzad 2014年

注意:方法2在IE10或更高版本的标准模式下将不起作用。有关更多信息:不再支持条件注释
2015年

@insertusername这里您说得很对,因为.ie10如果您仅对ie10做一些CSS修复,我认为使用类是最好的选择之一。随着Internet Explorer 10将".ie10"类添加到HTML元素<html class="ie10">,您可以像使用它一样使用它.ie10 .myclass {//some css here}
Aamir Shahzad 2015年

8

我只想检查浏览器是否为IE11或更旧版本,因为它们很糟糕。

function isCrappyIE() {
    var ua = window.navigator.userAgent;
    var crappyIE = false;
    var msie = ua.indexOf('MSIE ');
    if (msie > 0) {// IE 10 or older => return version number        
        crappyIE = true;
    }
    var trident = ua.indexOf('Trident/');
    if (trident > 0) {// IE 11 => return version number        
        crappyIE = true;
    }
    return crappyIE;
}   

if(!isCrappyIE()){console.table('not a crappy browser);}

2
这是我对命名约定标准的高度重视的投票
redbandit 19/09/17

7
function detectIE() {
    var ua = window.navigator.userAgent;
    var ie = ua.search(/(MSIE|Trident|Edge)/);

    return ie > -1;
}

不回答问题。边缘不是IE。
hda

hda,问题始于2013年,我认为今天,不忽略“ Edge”很有趣
Boss COTIGA

5

使用modernizr

Modernizr.addTest('ie', function () {
    var ua = window.navigator.userAgent;
    var msie = ua.indexOf('MSIE ') > 0;
    var ie11 = ua.indexOf('Trident/') > 0;
    var ie12 = ua.indexOf('Edge/') > 0;
    return msie || ie11 || ie12;
});

由于Edge不是IE,因此无法回答问题。另外Edge不是IE12。发行基于Chromium的Edge时,您还应该将Chrome或Opera添加到此列表中。(无论您希望通过此方法实现什么,然后检测Firefox都会更容易)
hda

5

或者,如果浏览器是Internet Explorer,则此简短版本将返回true:

function isIe() {
    return window.navigator.userAgent.indexOf("MSIE ") > 0
        || !!navigator.userAgent.match(/Trident.*rv\:11\./);
}

4

还有另一个简单的功能(至今仍是人类可读的),用于检测浏览器是否为IE(忽略Edge,这一点也不坏):

function isIE() {
  var ua = window.navigator.userAgent;
  var msie = ua.indexOf('MSIE '); // IE 10 or older
  var trident = ua.indexOf('Trident/'); //IE 11

  return (msie > 0 || trident > 0);
}

3

如果您不想使用useragent,也可以只检查浏览器是否为IE。注释后的代码实际上在IE浏览器中运行,并将“ false”变为“ true”。

var isIE = /*@cc_on!@*/false;
if(isIE){
    //The browser is IE.
}else{
    //The browser is NOT IE.
}   

1
IE11不支持条件编译
Gabriel Llamas

我只是尝试了一下,它仍然有效。您确定它不支持吗?
dev4life

3

我知道这是一个古老的问题,但是如果有人再次遇到它并且在检测IE11时遇到问题,这是适用于所有当前版本IE的有效解决方案。

var isIE = false;
if (navigator.userAgent.indexOf('MSIE') !== -1 || navigator.appVersion.indexOf('Trident/') > 0) {
    isIE = true;   
}

3

我用过这个

function notIE(){
    var ua = window.navigator.userAgent;
    if (ua.indexOf('Edge/') > 0 || 
        ua.indexOf('Trident/') > 0 || 
        ua.indexOf('MSIE ') > 0){
       return false;
    }else{
        return true;                
    }
}

2

这里有很多答案,我想补充一下我的意见。IE 11真是个关于flexbox的屁屁(在这里查看其所有问题和不一致之处)),我真的需要一种简单的方法来检查用户是否正在使用任何IE浏览器(不超过11​​),但不包括Edge,因为Edge实际上是挺好的。

基于此处给出的答案,我编写了一个简单的函数,该函数返回一个全局布尔变量,然后您就可以在下一行使用它了。检查IE非常容易。

var isIE;
(function() {
    var ua = window.navigator.userAgent,
        msie = ua.indexOf('MSIE '),
        trident = ua.indexOf('Trident/');

    isIE = (msie > -1 || trident > -1) ? true : false;
})();

if (isIE) {
    alert("I am an Internet Explorer!");
}

这样,您只需要查找一次,并将结果存储在变量中,而不必在每次函数调用时获取结果。(据我所知,由于用户代理与DOM不相关,您甚至不必等待文档准备执行此代码。)


2

如果您使用的是jquery版本> = 1.9,请尝试此操作,

var browser;
jQuery.uaMatch = function (ua) {
    ua = ua.toLowerCase();

    var match = /(chrome)[ \/]([\w.]+)/.exec(ua) ||
        /(webkit)[ \/]([\w.]+)/.exec(ua) ||
        /(opera)(?:.*version|)[ \/]([\w.]+)/.exec(ua) ||
        /(msie) ([\w.]+)/.exec(ua) || 
        ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua) ||
       /(Trident)[\/]([\w.]+)/.exec(ua) || [];

    return {
        browser: match[1] || "",
        version: match[2] || "0"
    };
};
// Don't clobber any existing jQuery.browser in case it's different
if (!jQuery.browser) {
    matched = jQuery.uaMatch(navigator.userAgent);
    browser = {};

    if (matched.browser) {
        browser[matched.browser] = true;
        browser.version = matched.version;
    }

    // Chrome is Webkit, but Webkit is also Safari.
    if (browser.chrome) {
        browser.webkit = true;
    } else if (browser.webkit) {
        browser.safari = true;
    }

    jQuery.browser = browser;
}

如果使用jQuery版本<1.9(在jQuery 1.9中删除了$ .browser),请改用以下代码:

$('.myClass').on('click', function (event) {
    if ($.browser.msie) {
        alert($.browser.version);
    }
});

谢谢你 不幸的是,我们仍在版本1.7.2上,尚无法更改。
user2571510

据我所知,这没有考虑基于Trident引擎的较新IE。
Bram Vanroy

已更新基于Trident的最新IE
Rohan Kumar

1

@SpiderCode的解决方案不适用于IE11。这是我此后在代码中使用的最佳解决方案,在该代码中,我需要针对特定​​功能进行浏览器检测。

IE11不再报告为MSIE,根据此更改列表,有意避免误检测。

如果您真的想知道它是IE,该怎么办是如果navigator.appName返回Netscape,则在用户代理中检测Trident /字符串,类似于(未经测试);

感谢这个答案

function isIE()
{
  var rv = -1;
  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 );
  }
  else 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 );
  }
  return rv == -1 ? false: true;
}

1

在下面,我发现了在谷歌搜索时执行此操作的优雅方法---

/ detect IE
var IEversion = detectIE();

if (IEversion !== false) {
  document.getElementById('result').innerHTML = 'IE ' + IEversion;
} else {
  document.getElementById('result').innerHTML = 'NOT IE';
}

// add details to debug result
document.getElementById('details').innerHTML = window.navigator.userAgent;

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

  // IE 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 (IE 12+)
  // 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;
}

1
这正是我在CodePen上使用笔的代码,这是我对此问题的答案的一部分。;-)
马里奥

1
是的,我使用了相同的方法,但是人们不想共享链接。将从此处开始更新参考链接。感谢您的出色工作Mario。
Rameshwar Vyevhare

1

更新SpiderCode的答案以解决字符串'MSIE'返回-1但与'Trident'匹配的问题。它曾经返回NAN,但现在针对该版本的IE返回11。

   function msieversion() {
       var ua = window.navigator.userAgent;
       var msie = ua.indexOf("MSIE ");
       if (msie > -1) {
           return ua.substring(msie + 5, ua.indexOf(".", msie));
       } else if (navigator.userAgent.match(/Trident.*rv\:11\./)) {
           return 11;
       } else {
           return false;
       }
    }

0

您可以检测所有Internet Explorer(经过测试的最新版本12)。

<script>
    var $userAgent = '';
    if(/MSIE/i['test'](navigator['userAgent'])==true||/rv/i['test'](navigator['userAgent'])==true||/Edge/i['test'](navigator['userAgent'])==true){
       $userAgent='ie';
    } else {
       $userAgent='other';
    }

    alert($userAgent);
</script>

看到这里https://jsfiddle.net/v7npeLwe/


0
function msieversion() {
var ua = window.navigator.userAgent;
console.log(ua);
var msie = ua.indexOf("MSIE ");

if (msie > -1 || navigator.userAgent.match(/Trident.*rv:11\./)) { 
    // If Internet Explorer, return version numbe
    // You can do what you want only in IE in here.
    var version_number=parseInt(ua.substring(msie + 5, ua.indexOf(".", msie)));
    if (isNaN(version_number)) {
        var rv_index=ua.indexOf("rv:");
        version_number=parseInt(ua.substring(rv_index+3,ua.indexOf(".",rv_index)));
    }
    console.log(version_number);
} else {       
    //other browser   
    console.log('otherbrowser');
}
}

您应该在控制台中看到结果,请使用chrome Inspect。


0

我已将此代码放在文档准备功能中,并且仅在Internet Explorer中触发。在Internet Explorer 11中测试。

var ua = window.navigator.userAgent;
ms_ie = /MSIE|Trident/.test(ua);
if ( ms_ie ) {
    //Do internet explorer exclusive behaviour here
}

0

仅在IE 11版本以下才能使用。

var ie_version = parseInt(window.navigator.userAgent.substring(window.navigator.userAgent.indexOf("MSIE ") + 5, window.navigator.userAgent.indexOf(".", window.navigator.userAgent.indexOf("MSIE "))));

console.log("version number",ie_version);


0

JavaScript函数可检测Internet Explorer或Edge的版本

function ieVersion(uaString) {
  uaString = uaString || navigator.userAgent;
  var match = /\b(MSIE |Trident.*?rv:|Edge\/)(\d+)/.exec(uaString);
  if (match) return parseInt(match[2])
}

0

死灵法师。

为了不依赖于用户代理字符串,只需检查一些属性:

if (document.documentMode) 
{
    console.log('Hello Microsoft IE User!');
}

if (!document.documentMode && window.msWriteProfilerMark) {
    console.log('Hello Microsoft Edge User!');
}

if (document.documentMode || window.msWriteProfilerMark) 
{
    console.log('Hello Microsoft User!');
}

if (window.msWriteProfilerMark) 
{
    console.log('Hello Microsoft User in fewer characters!');
}

此外,这还会检测到新的Chredge(阿纳海姆):

function isEdg()
{ 

    for (var i = 0, u="Microsoft", l =u.length; i < navigator.plugins.length; i++)
    {
        if (navigator.plugins[i].name != null && navigator.plugins[i].name.substr(0, l) === u)
            return true;
    }

    return false;
}

这会检测铬:

function isChromium()
{ 

    for (var i = 0, u="Chromium", l =u.length; i < navigator.plugins.length; i++)
    {
        if (navigator.plugins[i].name != null && navigator.plugins[i].name.substr(0, l) === u)
            return true;
    }

    return false;
}

而这个Safari:

if(window.safari)
{
    console.log("Safari, yeah!");
}


-1

我认为这将帮助你在这里

function checkIsIE() {
    var isIE = false;
    if (navigator.userAgent.indexOf('MSIE') !== -1 || navigator.appVersion.indexOf('Trident/') > 0) {
        isIE = true;
    }
    if (isIE)  // If Internet Explorer, return version number
    {
        kendo.ui.Window.fn._keydown = function (originalFn) {
            var KEY_ESC = 27;
            return function (e) {
                if (e.which !== KEY_ESC) {
                    originalFn.call(this, e);
                }
            };
        }(kendo.ui.Window.fn._keydown);

        var windowBrowser = $("#windowBrowser").kendoWindow({
            modal: true,
            id: 'dialogBrowser',
            visible: false,
            width: "40%",
            title: "Thông báo",
            scrollable: false,
            resizable: false,
            deactivate: false,
            position: {
                top: 100,
                left: '30%'
            }
        }).data('kendoWindow');
        var html = '<br /><div style="width:100%;text-align:center"><p style="color:red;font-weight:bold">Please use the browser below to use the tool</p>';
        html += '<img src="/Scripts/IPTVClearFeePackage_Box/Images/firefox.png"/>';
        html += ' <img src="/Scripts/IPTVClearFeePackage_Box/Images/chrome.png" />';
        html += ' <img src="/Scripts/IPTVClearFeePackage_Box/Images/opera.png" />';
        html += '<hr /><form><input type="button" class="btn btn-danger" value="Đóng trình duyệt" onclick="window.close()"></form><div>';
        windowBrowser.content(html);
        windowBrowser.open();

        $("#windowBrowser").parent().find(".k-window-titlebar").remove();
    }
    else  // If another browser, return 0
    {
        return false;
    }
}

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.