Javascript - 检测浏览器版本

时间:2015-12-15 10:22:23

标签: javascript jquery browser

我知道这不是最可靠的方式,但我真的没有其他很多选择。我基本上需要检测哪些浏览器和版本访问我的网站。如果是某个浏览器/版本,它将显示一条消息。这是针对TLS问题,某些浏览器版本不会显示https页面。

无论如何,目前我还有以下内容

function getBrowserInfo()
{
    var ua = navigator.userAgent, tem,
        M = ua.match(/(opera|chrome|safari|firefox|msie|trident(?=\/))\/?\s*(\d+)/i) || [];
    if(/trident/i.test(M[1]))
    {
        tem=  /\brv[ :]+(\d+)/g.exec(ua) || [];
        return 'IE '+(tem[1] || '');
    }
    if(M[1]=== 'Chrome')
    {
        tem= ua.match(/\b(OPR|Edge)\/(\d+)/);
        if(tem!= null) return tem.slice(1).join(' ').replace('OPR', 'Opera');
    }
    M = M[2]? [M[1], M[2]]: [navigator.appName, navigator.appVersion, '-?'];
    if((tem= ua.match(/version\/(\d+)/i))!= null)
        M.splice(1, 1, tem[1]);
    return M.join(' ');
}

var browserInfo = getBrowserInfo();
browserInfo = browserInfo.split(" ");

$(function () {
    alert(browserInfo);
    if(browserInfo[0] == 'Firefox' && browserInfo[1] < 27) {
        alert("Firefox");
    }
    if(browserInfo[0] == 'Chrome' && browserInfo[1] < 22) {
        alert("Chrome");
    }
    if(browserInfo[0] == 'IE' && browserInfo[1] < 11) {
        alert("IE");
    }
    if(browserInfo[0] == 'Safari' && browserInfo[1] < 11) {
        alert("Safari");
    }
    if(browserInfo[0] == 'Opera' && browserInfo[1] < 14) {
        alert("Safari");
    }
});

我担心的一件事是拆分字符串,浏览器返回不同的格式。另外,我认为所有这些if语句都是多余的,但我不能想到一种更有效的方法来做到这一点。

基本上,我正在寻找有关检测浏览器及其版本的最佳方法的建议,因此我可以为该浏览器显示自定义消息。

由于

2 个答案:

答案 0 :(得分:3)

您似乎正在使用jQuery。您可以使用$ .browser检测浏览器版本,但从版本1.9.1开始不推荐使用该功能。

我建议使用这个jQuery-plugin,它支持浏览器类型&amp;版本检测: https://github.com/gabceb/jquery-browser-plugin

使用此插件,您可以使用以下代码测试浏览器供应商:

if($.browser.msie) {
  alert('ie');
}

if($.browser.mozilla) {
  alert('firefox');
}

...

如果您想检查浏览器的版本,可以使用以下代码:

$.browser.version

答案 1 :(得分:0)

  

使用javascript返回ie版本

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