2016-07-26 4 views
0

Ich muss Browserversionen überprüfen und vergleichen, die veraltet sind. Wenn die Browserversion des Benutzers unter einer definierten (< =) Versionsnummer liegt, sollte eine Meldung erscheinen, die den Benutzer auffordert, seinen/ihren Browser zu aktualisieren. Die Version ist im folgenden Array in meinem HTML definiert.Javascript Browser Version Nachschlage Array

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

Meine Logik war es, wenn-Anweisungen zu codieren, aber ich will eine andere Art und Weise, es zu tun, so dass ich die Browser Familie holen kann (Chrome, Firefox oder IE) und dann der entsprechende veraltete Version und eine URL Gehe, um den Browser zu aktualisieren. Es sollte dynamisch sein, so dass ich nur eine neue Zeile zu meinem Array hinzufügen muss, die einen neuen Browser spezifiziert, um den Vergleich in Javascript zu machen.

prüfen Browser

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>' 
    ); 
}, 

Wie soll ich vorgehen?

+2

In dem Code 'browserarr' ist kein Array, es ist ein Objekt, wo' Name' überschrieben wird. – Tushar

+0

Haben Sie die vorhandene Bibliothek überprüft, die genau das tut? https://github.com/burocratik/outdated-browser – arjabbar

+0

Haben Sie einen Link für den Benutzer zu klicken, der sagt "Danke, aber ich werde für mich entscheiden, welche Version von welchem ​​Browser ich verwenden möchte"? – nnnnnn

Antwort

0

Es ist ein Widget, das genau das tut, was Sie suchen, und Sie können, welche Versionen Sie konfigurieren als veraltet hier markieren möchten:

https://updatemybrowser.org/widget.html

Aber in Bezug auf Ihre aktuellen Code. Ich würde Ihrem Browser Objekt ändern, um eine Struktur, mehr zu haben wie:

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

} 

Dann in Ihrem Code können Sie eine switch-Anweisung haben, die Browser-Namen (in Kleinbuchstaben, um es einfacher zu machen) vergleicht, dann eine if-Anweisung, dass switch-Klausel, die die akzeptierte Version überprüft und entsprechend handelt.

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