【发布时间】:2011-03-19 05:54:44
【问题描述】:
从 1.4 开始,jQuery.browser 似乎能够相当容易地识别 webkit。但是如何使用它来区分 Chrome 和 Safari(反之亦然)?
【问题讨论】:
标签: jquery safari google-chrome webkit browser-detection
从 1.4 开始,jQuery.browser 似乎能够相当容易地识别 webkit。但是如何使用它来区分 Chrome 和 Safari(反之亦然)?
【问题讨论】:
标签: jquery safari google-chrome webkit browser-detection
您也可以尝试使用这种方法,它对我有用。
isSafari: function ()
{
var isSafari = (navigator.userAgent.indexOf('Safari') != -1
&& navigator.userAgent.indexOf('Chrome') == -1)
console.log('IsSafari : ' + isSafari);
return isSafari;
},
【讨论】:
没有 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;
【讨论】:
由于 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;
}
【讨论】:
userAgent = userAgent.substring(0,userAgent.indexOf('.')); 的行上使用子串直到空格字符而不是句点,以获得完整的版本号,而不仅仅是版本号的第一部分(主要编号) .
'Version/' 字符串中使用小写的 v,因为前面的代码中用户代理字符串是小写的。
也适用于非 JQuery 用户:
navigator.userAgent.indexOf('WebKit') + 1 ?
((navigator.vendor || '').indexOf('Apple') + 1 ? /* Safari */ : /* Chrome */)
: /* not Webkit */
【讨论】:
window.chrome?$.browser.chrome=!0:($.browser.webkit&&($.browser.safari=!0),$.browser.chrome=!1);
此补丁添加了 $.browser.chrome 并从 $.browser.safari
中排除了 Goolge Chrome 检测【讨论】:
/Chrome/.test(navigator.userAgent)
【讨论】:
你可以这样做:
// 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;
}
【讨论】:
var userAgent = navigator.userAgent.toLowerCase(); $.browser.chrome = /chrome/.test(navigator.userAgent.toLowerCase()); var version = 0;
version 变量是不需要的,应该用$.browser.version 替换。