it-swarm.com.de

Unterscheiden Sie Chrome von Safari mit jQuery.browser

Es scheint, dass jQuery.browser das Webkit ab 1.4 relativ leicht identifizieren kann. Aber wie kann ich es verwenden, um Chrome von Safari zu unterscheiden (und umgekehrt)?

31
kingjeffrey

Da Sarfraz seine Antwort nicht korrigiert hat (Danke, Sarfraz, dass er mich in die richtige Richtung weist), werde ich hier Funktionscode posten.

var userAgent = navigator.userAgent.toLowerCase(); 
$.browser.chrome = /chrome/.test(navigator.userAgent.toLowerCase()); 

// Is this a version of Chrome?
if($.browser.chrome){
  userAgent = userAgent.substring(userAgent.indexOf('chrome/') +7);
  userAgent = userAgent.substring(0,userAgent.indexOf('.'));
  $.browser.version = userAgent;
  // If it is chrome then jQuery thinks it's safari so we have to tell it it isn't
  $.browser.safari = false;
}

// Is this a version of Safari?
if($.browser.safari){
  userAgent = userAgent.substring(userAgent.indexOf('version/') +8);
  userAgent = userAgent.substring(0,userAgent.indexOf('.'));
  $.browser.version = userAgent;
}
38
kingjeffrey

Ohne jQuery

isChrome = function() { 
  return /Chrome/.test(navigator.userAgent) && /Google Inc/.test(navigator.vendor);
}
isSafari = function() {
  return /Safari/.test(navigator.userAgent) && /Apple Computer/.test(navigator.vendor);
}

Mit jQuery

(Folgendes funktioniert nicht mit jQuery 1.9 und höher, da jQuery.browser von jQuery entfernt wurde. Siehe http://api.jquery.com/jQuery.browser/ )

$.browser.chrome = $.browser.webkit && !!window.chrome;
$.browser.safari = $.browser.webkit && !window.chrome;
36

Auch für Nicht-JQuery-Benutzer:

    navigator.userAgent.indexOf('WebKit') + 1 ? 
       ((navigator.vendor || '').indexOf('Apple') + 1 ? /* Safari */ : /* Chrome */)
    : /* not Webkit */

http://jsfiddle.net/HtWag/13/

2
Hugo Stieglitz

Sie können wie:

// Is this a version of Chrome?
if($.browser.chrome){
  userAgent = userAgent.substring(userAgent.indexOf('chrome/') +7);
  userAgent = userAgent.substring(0,userAgent.indexOf('.'));
  version = userAgent;
  // If it is chrome then jQuery thinks it's safari so we have to tell it it isn't
  $.browser.safari = false;
}

// Is this a version of Safari?

if($.browser.safari){
  userAgent = userAgent.substring(userAgent.indexOf('safari/') +7);
  userAgent = userAgent.substring(0,userAgent.indexOf('.'));
  version = userAgent;
}

http://api.jquery.com/jQuery.browser/

2
Sarfraz
/Chrome/.test(navigator.userAgent)
2
Scott Evernden
window.chrome?$.browser.chrome=!0:($.browser.webkit&&($.browser.safari=!0),$.browser.chrome=!1);

Dieser Patch fügt $ .browser.chrome hinzu und schließt auch die Goolge Chrome-Erkennung von $ .browser.safari aus.

0
J_z

Sie können auch versuchen, diesen Ansatz zu verwenden, es funktioniert für mich.

    isSafari: function () 
    {
            var isSafari = (navigator.userAgent.indexOf('Safari') != -1
                        && navigator.userAgent.indexOf('Chrome') == -1)

            console.log('IsSafari : ' + isSafari);

            return isSafari;
    },
0