2013-05-07 4 views
0

Я, используя следующую функцию, чтобы обнаружить свою версию IE:Как определить версию IE

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

Этот код будет возвращать IE версии, если используется IE браузер и он возвращает ложь, если другой браузер используемый. Он может использоваться в IE6, IE9 и Chrome. Когда я пытаюсь использовать последнюю версию Firefox v20, она не работает (веб-сайт зависает). Вы, ребята, знаете почему?

Или есть ли какая-либо другая функция, которая может использоваться для обнаружения версии IE?

+0

«Это не работает» означает, что он возвращает true? –

+0

Он ничего не возвращает. Он висит там ... – Coolguy

+0

Вы не обнаруживаете в HTML, это Javascript ... – dtech

ответ

1

JQuery имеет $ .browser: http://api.jquery.com/jQuery.browser/

вы можете сделать:

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

К сожалению, это устарело долгое время и было удалено в версиях v1.9 и v2 jQuery. –

+0

@VincentMcNabb true. в 1.9 Я использую jquery migrate plugin :) – basarat

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

+0

@Coolguy mate - это просто функция, которую вы можете сделать в своем собственном использовании? –

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.

Edit: вот лучшая версия основана на 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

Это работает для меня, я испытал это на IE9 через IE11. Строка useragent в IE11 отличается от предыдущих версий, поэтому здесь есть два разных теста.

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.

Смежные вопросы