2013-05-07 74 views
0

我使用下面的函数来检测我的IE版本:如何检测IE版本

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

此代码将返回IE版本,如果使用IE浏览器,如果其他浏览是将返回false用过的。它可以在IE6,IE9和Chrome中使用。当我尝试Firefox最新版本v20时,它不起作用(网站挂起)。你们知道为什么吗?

或者是否有任何其他功能可以用来检测IE版本?

+0

“不起作用”表示它返回true? – 2013-05-07 06:49:22

+0

它不会返回任何东西。它挂在那里... – Coolguy 2013-05-07 06:50:01

+0

你没有在HTML中检测到,这是Javascript ... – dtech 2013-05-07 06:50:51

回答

1

jQuery有$ .browser:http://api.jquery.com/jQuery.browser/

你可以这样做:

if ($.browser.msie){ 
} 
+1

不幸的是,这已被弃用了很长一段时间,并已在v1.9和j2的v2中被删除。 – 2013-05-07 07:06:24

+0

@VincentMcNabb true。在1.9我正在使用jQuery的迁移插件:) – basarat 2013-05-07 07:08:05

0

我用这个

public static class DeviceHelper 
{ 

    public static bool IsMobile(string userAgent) 
    { 
     userAgent = userAgent.ToLower(); 
     var currentSubContent = NodeLocator.GetNodeOfExactType<Language>(); 

     var isMobileDevicesActivatedInBackend = currentSubContent.ActiveForMobileDevices; 
     if (isMobileDevicesActivatedInBackend) 
     { 
      return userAgent.Contains("iphone") | 
      userAgent.Contains("ppc") | 
      userAgent.Contains("windows ce") | 
      userAgent.Contains("blackberry") | 
      userAgent.Contains("opera mini") | 
       //userAgent.Contains("mobile") | 
      userAgent.Contains("palm") | 
      userAgent.Contains("portable") | 
      (userAgent.Contains("android") && userAgent.Contains("mobile")) | 
      (userAgent.Contains("windows") && userAgent.Contains("mobile")); 

     } 
     else 
     { 
      return false; 
     } 
    } 
} 

然后,你可以添加你从这里所需要的:检测版本MSIE

HERE

或jQuery的只是使用他们的API:

if ($.browser.msie){ 
} 
+0

但我没有使用移动应用程序...我用笔记本电脑。 – Coolguy 2013-05-07 06:59:26

+0

@Coolguy只是一个可以让你自己使用的功能吗? – 2013-05-07 07:03:45

0

使用此功能,它的工作原理。

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+" version ->"+ver); 
    } 
0

这是非常丑陋,但直截了当,使用IE条件注释。

编辑:这里是一个基于wikipedia's example

<script> 
    var internet_explorer_version = -1; 

/*@cc_on 

    @if (@_jscript_version == 10) 
    internet_explorer_version = 10; 

    @elif (@_jscript_version == 9) 
    internet_explorer_version = 9; 

    @elif (@_jscript_version == 5.8) 
    internet_explorer_version = 8; 

    @elif (@_jscript_version == 5.7 && window.XMLHttpRequest) 
    internet_explorer_version = 7; 

    @elif (@_jscript_version == 5.6 || (@_jscript_version == 5.7 && !window.XMLHttpRequest)) 
    internet_explorer_version = 6; 

    @elif (@_jscript_version == 5.5) 
    internet_explorer_version = 5.5; 

    @end 

@*/ 
</script> 

条件注释一个更好的版本只能通过IE4 +支持。较早的IE或非IE浏览器将跳过所有检查,并留下-1。这个脚本检查5.5+,这应该是足够远的任何你需要的东西。

0
/** 
* Detects browser endgine and browser version. 
* @class BrowserDetect 
* @property {string} browser browser engine 
* @property {number} version browser version 
* @return {object} 
*/ 
var BrowserDetect = { 
    init: function() { 
     this.browser = this.searchString(this.dataBrowser) || "An unknown browser"; 
     this.version = this.searchVersion(navigator.userAgent) 
       || this.searchVersion(navigator.appVersion) 
       || "an unknown version"; 
     this.OS = this.searchString(this.dataOS) || "an unknown OS"; 
    }, 
    searchString: function(data) { 
     for (var i = 0; i < data.length; i++) { 
      var dataString = data[i].string; 
      var dataProp = data[i].prop; 
      this.versionSearchString = data[i].versionSearch || data[i].identity; 
      if (dataString) { 
       if (dataString.indexOf(data[i].subString) !== -1) 
        return data[i].identity; 
      } 
      else if (dataProp) 
       return data[i].identity; 
     } 
    }, 
    searchVersion: function(dataString) { 
     var index = dataString.indexOf(this.versionSearchString); 
     if (index === -1) 
      return; 
     return parseFloat(dataString.substring(index + this.versionSearchString.length + 1)); 
    }, 
    dataBrowser: [ 
     { 
      string: navigator.userAgent, 
      subString: "Chrome", 
      identity: "Chrome" 
     }, 
     {string: navigator.userAgent, 
      subString: "OmniWeb", 
      versionSearch: "OmniWeb/", 
      identity: "OmniWeb" 
     }, 
     { 
      string: navigator.vendor, 
      subString: "Apple", 
      identity: "Safari", 
      versionSearch: "Version" 
     }, 
     { 
      prop: window.opera, 
      identity: "Opera", 
      versionSearch: "Version" 
     }, 
     { 
      string: navigator.vendor, 
      subString: "iCab", 
      identity: "iCab" 
     }, 
     { 
      string: navigator.vendor, 
      subString: "KDE", 
      identity: "Konqueror" 
     }, 
     { 
      string: navigator.userAgent, 
      subString: "Firefox", 
      identity: "Firefox" 
     }, 
     { 
      string: navigator.vendor, 
      subString: "Camino", 
      identity: "Camino" 
     }, 
     {// for newer Netscapes (6+) 
      string: navigator.userAgent, 
      subString: "Netscape", 
      identity: "Netscape" 
     }, 
     { 
      string: navigator.userAgent, 
      subString: "MSIE", 
      identity: "Explorer", 
      versionSearch: "MSIE" 
     }, 
     { 
      string: navigator.userAgent, 
      subString: "Gecko", 
      identity: "Mozilla", 
      versionSearch: "rv" 
     }, 
     {// for older Netscapes (4-) 
      string: navigator.userAgent, 
      subString: "Mozilla", 
      identity: "Netscape", 
      versionSearch: "Mozilla" 
     } 
    ], 
    dataOS: [ 
     { 
      string: navigator.platform, 
      subString: "Win", 
      identity: "Windows" 
     }, 
     { 
      string: navigator.platform, 
      subString: "Mac", 
      identity: "Mac" 
     }, 
     { 
      string: navigator.userAgent, 
      subString: "iPhone", 
      identity: "iPhone/iPod" 
     }, 
     { 
      string: navigator.platform, 
      subString: "Linux", 
      identity: "Linux" 
     } 
    ] 
}; 
0

你可以使用正则表达式。

<script type="text/javascript"> 
var userAgent = navigator.userAgent; 

var internet_version = -1; 
userAgent.replace(/MSIE .{1,5};/g, function(findS) { 
    internet_version = parseFloat(findS.substring(5, findS.length-1)); 
}); 

alert(internet_version); 
</script> 
0

这个工作对我来说,我已经通过IE11测试了IE9。 IE11中的useragent字符串与之前的版本不同,这就是为什么这里有两个不同的测试。

if (/msie|trident/ig.test(navigator.userAgent)) { 
    var matches = navigator.userAgent.match(/MSIE\s([\d\.]+)/) || navigator.userAgent.match(/rv:([\d\.]+)/); 
    var ieVersion = parseInt(matches[1], 10); 
} 
0

从MSDN得到这个脚本:

function getInternetExplorerVersion() 
    // Returns the version of Internet Explorer or a -1 
    // (indicating the use of another browser). 
    // http://msdn.microsoft.com/en-us/library/ms537509(v=vs.85).aspx 
    { 
     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; 
    } 

就个人而言,我永远只是应用类<html>,使用条件注释。稍后,我在javascript中检查类名。