Javascript - 我如何获得所有浏览器的名称?

时间:2015-12-07 20:35:22

标签: javascript internet-explorer safari

在IE11浏览器Safari OSX 10.11上打开时,这不起作用。有什么问题?

var browser = '';
var browserVersion = 0;

if (/Opera[\/\s](\d+\.\d+)/.test(navigator.userAgent)) {
    browser = 'Opera';
} else if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)) {
    browser = 'MSIE';
} else if (/Navigator[\/\s](\d+\.\d+)/.test(navigator.userAgent)) {
    browser = 'Netscape';
} else if (/Chrome[\/\s](\d+\.\d+)/.test(navigator.userAgent)) {
    browser = 'Chrome';
} else if (/Safari[\/\s](\d+\.\d+)/.test(navigator.userAgent)) {
    browser = 'Safari';
    /Version[\/\s](\d+\.\d+)/.test(navigator.userAgent);
    browserVersion = new Number(RegExp.$1);
} else if (/Firefox[\/\s](\d+\.\d+)/.test(navigator.userAgent)) {
    browser = 'Firefox';
}
if(browserVersion === 0){
    browserVersion = parseFloat(new Number(RegExp.$1));
}
alert(browser + "*" + browserVersion);

输出:* 0仅

2 个答案:

答案 0 :(得分:2)

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

     

如果你真的想知道它,你可以做什么?IE是要检测到的   如果navigator.appName返回,则在用户代理中使用Trident / string   Netscape,类似(未经测试的);

How to detect IE11?

来自微软的更多信息:

https://msdn.microsoft.com/en-us/library/ms537503(v=vs.85).aspx#TriToken

  

Trident / 7.0 IE11

     

Trident / 6.0 Internet Explorer 10

     

Trident / 5.0 Internet Explorer 9

     

Trident / 4.0 Internet Explorer 8

在Safari主题上,查看最新的userAgent字符串,它没有ver.ver,因此你的正则表达式失败了:

Safari 7.0.3 Mozilla / 5.0(Macintosh; Intel Mac OS X 10_9_3)AppleWebKit / 537.75.14(KHTML,与Gecko一样)Version / 7.0.3 { [Error: ER_PARSE_ERROR: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT @tmdbid' at line 1] code: 'ER_PARSE_ERROR', errno: 1064, sqlState: '42000', index: 0 }

答案 1 :(得分:1)

如果您只需要浏览器名称,可以尝试使用此功能,这适用于最新的IE和Safari:

var BrowserDetect = function() {
        var nav = window.navigator,
        ua = window.navigator.userAgent.toLowerCase();
        // Detect browsers (only the ones that have some kind of quirk we need to work around)
        if ((nav.appName.toLowerCase().indexOf("microsoft") != -1 || nav.appName.toLowerCase().match(/trident/gi) !== null))
            return "IE";
        if (ua.match(/chrome/gi) !== null)
            return "Chrome";
        if (ua.match(/firefox/gi) !== null)
            return "Firefox";
        if (ua.match(/safari/gi) !== null)
            return "Safari";
        if (ua.match(/webkit/gi) !== null)
            return "Webkit";
        if (ua.match(/gecko/gi) !== null)
            return "Gecko";
        if (ua.match(/opera/gi) !== null)
            return "Opera";
        // If any case miss we will return null
        return null
    };