使用jQuery.browser区分Chrome和Safari

kin*_*rey 31 safari jquery webkit google-chrome browser-detection

从1.4开始,似乎jQuery.browser能够很容易地识别webkit.但是如何使用它来区分Chrome和Safari(反之亦然)?

kin*_*rey 38

由于Sarfraz没有纠正他的答案(谢谢Sarfraz指出我正确的方向),我将在这里发布功能代码.

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;
}
Run Code Online (Sandbox Code Playgroud)

  • 对于safari,$ .browser.version最终会为您提供webkit的版本,而不是safari的版本.请尝试使用userAgent.indexOf('Version /')+ 8. (3认同)
  • @David,你需要在你的'Version /'字符串中做小写的`v`,就像代码中早先用户代理字符串是小写的那样. (3认同)

Vik*_*ary 36

没有 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);
}
Run Code Online (Sandbox Code Playgroud)

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;
Run Code Online (Sandbox Code Playgroud)