Отличить Chrome от Safari с помощью jQuery.browser - PullRequest
31 голосов
/ 22 июля 2010

Кажется, jQuery.browser достаточно легко идентифицирует webkit, начиная с 1.4. Но как я могу использовать его, чтобы отличить Chrome от Safari (и наоборот)?

Ответы [ 7 ]

38 голосов
/ 29 июля 2010

Поскольку Сарфраз не исправил свой ответ (спасибо, Сарфраз, указал мне верное направление), я опубликую функциональный код здесь.

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;
}
36 голосов
/ 08 августа 2011

Без 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);
}

С jQuery

(Следующее не будет работать с jQuery 1.9 и выше как jQuery.browser был удален из jQuery. См. http://api.jquery.com/jQuery.browser/)

$.browser.chrome = $.browser.webkit && !!window.chrome;
$.browser.safari = $.browser.webkit && !window.chrome;
2 голосов
/ 24 апреля 2012

Также для не-JQuery пользователей:

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

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

2 голосов
/ 22 июля 2010
/Chrome/.test(navigator.userAgent)
2 голосов
/ 22 июля 2010

Вы можете сделать как:

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

0 голосов
/ 12 февраля 2015

Вы также можете попробовать использовать этот подход, он работает для меня.

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

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

            return isSafari;
    },
0 голосов
/ 26 марта 2012
window.chrome?$.browser.chrome=!0:($.browser.webkit&&($.browser.safari=!0),$.browser.chrome=!1);

Этот патч добавляет $. Browser.chrome , а также исключает обнаружение Goolge Chrome из $. Browser.safari

...