看起来jQuery.browser能够很容易地从1.4开始识别webkit。但是,我如何使用它来区分Chrome和Safari(反之亦然)呢?使用jQuery.browser区分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;
}
你可以这样做:
// 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;
}
uhm - $ .browser.chrome未定义。并且$ .browser.safari对于chrome和safari都是true – 2010-07-21 21:19:12
@sAc,你已经接近了,这应该出现在你提供的代码之前:var userAgent = navigator.userAgent.toLowerCase(); $ .browser.chrome = /chrome/.test(navigator.userAgent.toLowerCase()); var version = 0;' – kingjeffrey 2010-07-21 21:28:27
@sAc,'version'变量不需要,应该用'$ .browser.version'替换。 – kingjeffrey 2010-07-22 20:13:37
/Chrome/.test(navigator.userAgent)
没有 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;
第一个解决方案非常优雅。 – NullVoxPopuli 2012-02-29 19:02:32
为什么!铬是什么意思? – Carlos 2012-08-31 11:29:36
'$ .browser.webkit &&!window.chrome'在Firefox中的结果为... – 2012-09-07 02:02:48
window.chrome?$.browser.chrome=!0:($.browser.webkit&&($.browser.safari=!0),$.browser.chrome=!1);
这个补丁增加了$ .browser.chrome,也排除Goolge的Chrome浏览器检测从$ .browser.safari
也非JQuery的用户:
navigator.userAgent.indexOf('WebKit') + 1 ?
((navigator.vendor || '').indexOf('Apple') + 1 ? /* Safari */ : /* Chrome */)
: /* not Webkit */
这为我做了诡计。如果你不习惯这种条件陈述,那么通读一点点技巧是可以的,但是你已经很好地解决了这个问题。万分感谢。 – 2012-07-23 20:59:38
你也可以尝试使用这种方法,它为我工作。
isSafari: function()
{
var isSafari = (navigator.userAgent.indexOf('Safari') != -1
&& navigator.userAgent.indexOf('Chrome') == -1)
console.log('IsSafari : ' + isSafari);
return isSafari;
},
- 1. 互联网浏览器,Chrome浏览器Chrome浏览器
- 2. 使Chrome浏览器Devtools
- 3. Chrome浏览器相比,Safari浏览器
- 4. 使用Javascript检测Chrome浏览器和Safari浏览器
- 5. android webview调用使用chrome浏览器
- 6. Chrome浏览器window.showModaldialog
- 7. Chrome浏览器 - 相当于Firefox浏览器的IE浏览器
- 8. Chrome浏览器找不到部分
- 9. 使用AJAX检测Chrome浏览器
- 10. 使用Chrome魔方浏览器
- 11. ElementNotVisibleException当使用无头Chrome浏览器
- 12. 在Chrome浏览器上使用目标
- 13. 使用Chrome浏览器模拟Nexus 7?
- 14. 力Chrome浏览器使用花车
- 15. 使用jReject仅允许Chrome浏览器
- 16. B4A - 使用Chrome浏览器的webview
- 17. 使用Chrome浏览器的DOM树蟒
- 18. 如何使用chrome浏览器在vb.net
- 19. Google Chrome浏览器如何实现Chrome浏览器?
- 20. 在FF和Internet Explorer中,Chrome浏览器中的Chrome浏览器
- 21. 区分移动浏览器和PC网页浏览器
- 22. Android和Chrome浏览器之间的Chrome有什么区别?
- 23. 如何找到Chrome浏览器和Android原生浏览器之间的区别
- 24. 从Python的webbrowser.get()调用Chrome浏览器浏览器
- 25. 在Chrome浏览器和/或Safari浏览器中启用XSS
- 26. ajax调用在Chrome浏览器,Firefox但不在IE浏览器?
- 27. @ font-face不适用于Chrome浏览器或火狐浏览器
- 28. jQuery Script适用于所有浏览器,但Chrome浏览器
- 29. Dashcode区分iPad和iPhone浏览器
- 30. Chrome浏览器javascript错误
对于safari,$ .browser.version最终会为您提供webkit的版本,而不是Safari的版本。试试用userAgent.indexOf('Version /')+ 8代替。 – David 2011-08-24 21:37:08
此外,你可以子字符串,直到一个空格字符,而不是句号,说'userAgent = userAgent.substring(0,userAgent.indexOf('。'));'为了得到完整版本号,而不是只是第一个部分版本号(主号码)。 – mkmurray 2012-02-29 00:42:43
@David,你需要在你的''Version /''字符串中做小写'v',就像在代码中用户代理字符串是小写的那样。 – mkmurray 2012-02-29 00:43:52