Javascript浏览器版本查找数组

时间:2016-07-26 13:39:34

标签: javascript cross-browser

我需要检查并比较过时的浏览器版本。如果用户的浏览器版本低于定义的(< =)版本号,则应该出现一条消息,告诉用户更新他/她的浏览器。该版本在我的html中的以下数组中定义。

<script type="text/javascript" language="javascript">

     var browserarr = {Name:"Chrome", ChromeVersion:52, URL:"http://www.google.com",
              Name:"Firefox", FirefoxVersion:40,  URL:"http://www.firefox.com",
              Name:"Safari", SafariVersion:10,  URL:""

              };

</script>

我的逻辑是使用if语句对其进行编码,但我想采用另一种方式来执行此操作以便我可以获取浏览器系列(chrome,firefox或IE),然后使用相应的过时版本和URL来更新浏览器。它应该是动态的,所以我只需要在我的数组中添加一个新行,指定一个新的浏览器来进行javascript中的比较。

检查浏览器

detectJS: function () {
    b = detect.parse(navigator.userAgent);

    if (b.browser.family === 'Chrome' && b.browser.major <= browserarr["ChromeVersion"]) {
       document.getElementById('browserNotificationDiv').style.display = "block"; 
        var url = 'google.com';
        //document.getElementById("msgURL").innerHTML = browserarr["URL"];

    }

    if (b.browser.family === 'IE' && b.browser.major <= 9) {
       document.getElementById('browserNotificationDiv').style.display = "block";
       var url = 'ie.com';
    }

    if (b.browser.family === 'Safari' && b.browser.major <= browserarr["SafariVersion"]) {
       document.getElementById('browserNotificationDiv').style.display = "block";
        var url = 'safari.com';
    }

    if (b.browser.family === 'Firefox' && b.browser.major <= browserarr["FirefoxVersion"]) {

       document.getElementById('browserNotificationDiv').style.display = "block";
       var url = 'firefox.com';
    }

    browserDetect.displayInfo(
    'Your current browser ' + b.browser.family + ' version ' + b.browser.major +' is outdated. </br>' +
    'Please download the latest version by going to: ' + url + ' ' + '<a href="'+browserarr["URL"]+'">link</a>' +'</br>'
    );
},

我该怎么办?

1 个答案:

答案 0 :(得分:0)

有一个小部件可以完全满足您的要求,您可以在此配置要标记为过时的版本:

https://updatemybrowser.org/widget.html

但就您当前的代码而言。我会改变你的浏览器对象,使其结构更像:

var browserList = {
    "chrome" : {
        acceptedVersion: 52,
        downloadUrl: "https://www.google.com"
    },

    "firefox" : {
        acceptedVersion: 40,
        downloadUrl: "https://www.firefox.com"        
    },

    "safari" : {
        acceptedVersion: 10,
        downloadUrl: "https://www.apple.com"        
    }

}

然后在你的代码中,你可以有一个switch语句,用于比较浏览器名称(小写以使其更容易),然后在该switch子句中使用if语句检查接受的版本并对其进行适当的操作。

var broswerName = b.browser.family.toLowerCase();

switch(broswerName) {
    case 'chrome':

        if(broswerList[broswerName].acceptedVersion > b.browser.major) {
            //browser is outdated            
        }

        break;
    case 'firefox':

        if(broswerList[broswerName].acceptedVersion > b.browser.major) {
            //browser is outdated            
        }

        break;
}