2016-07-26 74 views
0

我需要檢查和比較過時的瀏覽器版本。如果用戶的瀏覽器版本低於定義的(< =)版本號,則會顯示一條消息,通知用戶更新他/她的瀏覽器。該版本在我的html中的以下數組中定義。Javascript瀏覽器版本查詢陣列

<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語句的代碼,但我想另一種方式來做到這一點,這樣我可以取回瀏覽器系列(鉻,Firefox或IE瀏覽器),然後將相應的過時的版本和網址去更新瀏覽器。它應該是動態的,因此我只需要在我的數組中添加一個新行,以指定一個新的瀏覽器以在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>' 
    ); 
}, 

我應如何處理?

+2

在代碼中'browserarr'不是一個數組,它是一個Object,其中'Name'被覆蓋。 – Tushar

+0

您是否檢查過現有的庫? https://github.com/burocratik/outdated-browser – arjabbar

+0

您是否有鏈接讓用戶點擊「謝謝,但我會自己決定使用哪個瀏覽器版本」? – nnnnnn

回答

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語句,那麼if語句在switch語句檢查接受的版本並適當地對其執行操作。

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; 
}