31 votes

Distinguer Chrome de Safari à l'aide de jQuery.browser

Il semble que jQuery.browser soit capable d'identifier assez facilement le webkit à partir de 1.4. Mais comment puis-je l'utiliser pour distinguer Chrome de Safari (et vice-versa)?

38voto

kingjeffrey Points 5822

Puisque Sarfraz n'a pas corrigé sa réponse (merci Sarfraz de m'avoir pointé dans la bonne direction), je posterai le code de fonctionnement ici.

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

36voto

Vikrant Chaudhary Points 4306

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

Avec jQuery

(La suite ne fonctionnera pas avec jQuery 1.9 et supérieur car jQuery.browser a été supprimé de jQuery. Voir http://api.jquery.com/jQuery.browser/ )

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

2voto

Sarfraz Points 168484

Vous pouvez faire comme:

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

2voto

Scott Evernden Points 17858
/Chrome/.test(navigator.userAgent)

2voto

Hugo Stieglitz Points 41

Aussi pour les utilisateurs non-JQuery:

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

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X