348 Stimmen

Wie kann man die Version eines Browsers erkennen?

Ich habe nach einem Code gesucht, mit dem ich erkennen kann, ob der Benutzer, der die Website besucht, Firefox 3 oder 4 hat. Alles, was ich gefunden habe, ist Code zur Erkennung des Browsertyps, aber nicht der Version.

Wie kann ich die Version eines solchen Browsers erkennen?

18voto

Oliver Moran Punkte 4989

Verwenden Sie dies: http://www.quirksmode.org/js/detect.html

alert(BrowserDetect.browser); // will say "Firefox"
alert(BrowserDetect.version); // will say "3" or "4"

16voto

Danail Gabenski Punkte 2150

Ich habe nach einer Lösung für mich selbst gesucht, da jQuery 1.9.1 und oben haben die $.browser Funktionalität. Ich habe diese kleine Funktion entwickelt, die für mich funktioniert. Sie benötigt eine globale Variable (ich habe meine _browser genannt), um zu prüfen, welcher Browser es ist. Ich habe eine jsfiddle um zu veranschaulichen, wie es verwendet werden kann. Natürlich kann es für andere Browser erweitert werden, indem man einfach einen Test für _browser.foo hinzufügt, wobei foo der Name des Browsers ist. Ich habe nur die gängigen Browser getestet.

detectBrowser()

_browser = {};

function detectBrowser() {
  var uagent = navigator.userAgent.toLowerCase(),
      match = '';

  _browser.chrome  = /webkit/.test(uagent)  && /chrome/.test(uagent)      &&
                     !/edge/.test(uagent);

  _browser.firefox = /mozilla/.test(uagent) && /firefox/.test(uagent);

  _browser.msie    = /msie/.test(uagent)    || /trident/.test(uagent)     ||
                     /edge/.test(uagent);

  _browser.safari  = /safari/.test(uagent)  && /applewebkit/.test(uagent) &&
                     !/chrome/.test(uagent);

  _browser.opr     = /mozilla/.test(uagent) && /applewebkit/.test(uagent) &&
                     /chrome/.test(uagent)  && /safari/.test(uagent)      &&
                     /opr/.test(uagent);

  _browser.version = '';

  for (x in _browser) {
    if (_browser[x]) {

      match = uagent.match(
                new RegExp("(" + (x === "msie" ? "msie|edge" : x) + ")( |\/)([0-9]+)")
              );

      if (match) {
        _browser.version = match[3];
      } else {
        match = uagent.match(new RegExp("rv:([0-9]+)"));
        _browser.version = match ? match[1] : "";
      }
      break;
    }
  }
  _browser.opera = _browser.opr;
  delete _browser.opr;
}

detectBrowser();

console.log(_browser)

Um zu prüfen, ob der aktuelle Browser Opera ist, müssen Sie Folgendes tun

if (_browser.opera) { // Opera specific code }

bearbeiten Die Formatierung wurde korrigiert, die Erkennung für IE11 und Opera/Chrome wurde korrigiert, browserResult wurde zu result geändert. Jetzt ist die Reihenfolge der _browser Tasten spielt keine Rolle. Aktualisiert jsFiddle Link.

2015/08/11 bearbeiten Neuer Testfall für Internet Explorer 12 (EDGE) hinzugefügt, ein kleines Regexp-Problem behoben. Aktualisiert jsFiddle Link.

15voto

function BrowserCheck()
{
    var N= navigator.appName, ua= navigator.userAgent, tem;
    var M= ua.match(/(opera|chrome|safari|firefox|msie|trident)\/?\s*(\.?\d+(\.\d+)*)/i);
    if(M && (tem= ua.match(/version\/([\.\d]+)/i))!= null) {M[2]=tem[1];}
    M= M? [M[1], M[2]]: [N, navigator.appVersion,'-?'];
    return M;
}

Dies gibt ein Array zurück. Das erste Element ist der Browsername, das zweite Element ist die vollständige Versionsnummer im String-Format.

9voto

YunHan Punkte 91

Dies ist ein Update auf Fzs2 & kennebec für New Edge Chromium

function get_browser() {
    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 {name:'IE',version:(tem[1]||'')};
        }   
    if(M[1]==='Chrome'){
        tem=ua.match(/\bEdg\/(\d+)/)
        if(tem!=null)   {return {name:'Edge(Chromium)', version:tem[1]};}
        tem=ua.match(/\bOPR\/(\d+)/)
        if(tem!=null)   {return {name:'Opera', version:tem[1]};}
        }   
    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 {
      name: M[0],
      version: M[1]
    };
 }

var browser=get_browser(); // browser.name = 'Edge(Chromium)'
                           // browser.version = '86'

console.log(browser);

8voto

Marek Punkte 1600

JQuery kann dies sehr gut handhaben ( jQuery.browser )

var ua = $.browser;
if ( ua.mozilla && ua.version.slice(0,3) == "1.9" ) {
    alert( "Do stuff for firefox 3" );
}

EDIT: Wie Joshua in seinem Kommentar unten schrieb, jQuery.browser Eigenschaft wird in jQuery seit Version 1.9 nicht mehr unterstützt (lesen Sie jQuery 1.9 Versionshinweise für weitere Einzelheiten). jQuery-Entwicklungsteam empfiehlt mit einem umfassenderen Ansatz wie der Anpassung der Benutzeroberfläche mit Modernizr Bibliothek.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X