JavaScript中的浏览器检测?

233

如何使用JavaScript确定浏览器和版本信息?


确保您不要将关键功能基于此测试。 - Joe Ratzer
这里有一个更好的链接来解释对象检测:http://www.quirksmode.org/js/support.html - kmote
其他相关答案可以在这个这个重复问题中找到。 - Matthijs Wessels
25个回答

0

我写了这个小函数,希望能有所帮助。你可以在这里找到最新版本browserDetection

function detectBrowser(userAgent){
  var chrome  = /.*(Chrome\/).*(Safari\/).*/g;
  var firefox = /.*(Firefox\/).*/g;
  var safari  = /.*(Version\/).*(Safari\/).*/g;
  var opera   = /.*(Chrome\/).*(Safari\/).*(OPR\/).*/g

  if(opera.exec(userAgent))
    return "Opera"
  if(chrome.exec(userAgent))
    return "Chrome"
  if(safari.exec(userAgent))
    return "Safari"
  if(firefox.exec(userAgent))
    return "Firefox"
}

0

不完全是你想要的,但接近它:

var jscriptVersion = /*@cc_on @if(@_jscript) @_jscript_version @else @*/ false /*@end @*/;
var geckoVersion = navigator.product === 'Gecko' && navigator.productSub;
var operaVersion = 'opera' in window && 'version' in opera && opera.version();

变量将包含适当的版本或false(如果不可用)。

如果有人使用Chrome能够找出是否可以以类似于window.opera的方式使用window.chrome,我会非常感激。


0
有时我们需要一个简单的方法来检查浏览器是否为IE。以下是可能的方法:
 var isMSIE = (/trident/i).test(navigator.userAgent);

 if(isMSIE)
 {
  /* do something for ie */
 }
 else
 {
  /* do something else */
 }

或者简化版的Siva方法:

 if(!!navigator.systemLanguage)
 {
  /* do something for ie */
 }
 else
 {
  /* do something else */
 }

MSIE v.11 检查:

if( (/trident/i).test(navigator.userAgent) && (/rv:/i).test(navigator.userAgent) )
{
  /* do something for ie 11 */
}

其他IE浏览器在其userAgent属性中包含MSIE字符串,因此可以通过它来捕获。


根据其他回答此问题的方式,最好进行特性检测而非浏览器检测。 - Ruskin
其他检测IE浏览器的方法包括特性检测和用户代理中的IE字符串检测。例如:if( (/MSIE/i).test(navigator.userAgent) && !!window.MSInputMethodContext ) { /* ie check */ } 或者 if( !!window.MSInputMethodContext ) { /* ie 11 check */ } - Christiyan

0
我发现了一些有趣且更快的方法。 IE支持navigator.systemLanguage,它返回“en-US”,而其他浏览器则返回undefined
<script>
    var lang = navigator.systemLanguage;
    if (lang!='en-US'){document.write("Well, this is not internet explorer");}
    else{document.write("This is internet explorer");}
</script>

-1
以下代码片段将展示如何根据IE版本和浏览器显示UI元素。
$(document).ready(function () {

var msiVersion = GetMSIieversion();
if ((msiVersion <= 8) && (msiVersion != false)) {

    //Show UI elements specific to IE version 8 or low

    } else {
    //Show UI elements specific to IE version greater than 8 and for other browser other than IE,,ie..Chrome,Mozila..etc
    }
}
);

下面的代码将展示如何获取IE浏览器版本

function GetMSIieversion() {

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 (IE 12+) => return version number
    return parseInt(ua.substring(edge + 5, ua.indexOf('.', edge)), 10);
}

// other browser like Chrome,Mozila..etc
return false;

}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接