看起来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. android webview调用使用chrome浏览器
- 2. Chrome浏览器window.showModaldialog
- 3. Chrome浏览器 - 相当于Firefox浏览器的IE浏览器
- 4. Chrome浏览器找不到部分
- 5. B4A - 使用Chrome浏览器的webview
- 6. 使用AJAX检测Chrome浏览器
- 7. 力Chrome浏览器使用花车
- 8. 使用jReject仅允许Chrome浏览器
- 9. 使用Chrome魔方浏览器
- 10. ElementNotVisibleException当使用无头Chrome浏览器
- 11. 在FF和Internet Explorer中,Chrome浏览器中的Chrome浏览器
- 12. 从Python的webbrowser.get()调用Chrome浏览器浏览器
- 13. jQuery Script适用于所有浏览器,但Chrome浏览器
- 14. ajax调用在Chrome浏览器,Firefox但不在IE浏览器?
- 15. 在Chrome浏览器和/或Safari浏览器中启用XSS
- 16. Dashcode区分iPad和iPhone浏览器
- 17. event.currentTarget.activeElement的Chrome浏览器
- 18. Chrome浏览器对应gBrowser?
- 19. INDEX_SIZE_ERR点击Chrome浏览器
- 20. Chrome浏览器terminatting自动
- 21. 无法在Chrome浏览器
- 22. Chrome浏览器javascript错误
- 23. 使用chrome。*或浏览器的Firefox/Chrome/MS Edge扩展。*
- 24. 绘制Web浏览器的部分区域 - 使用IViewObject.Draw()
- 25. 使用Chrome浏览器,IE浏览器,Firefox浏览器Maven项目的Maven依赖项
- 26. 用python扩展Chrome浏览器
- 27. Chrome浏览器图标,同时用JS
- 28. Chrome浏览器“检查”标尺 - 禁用
- 29. Python:用Chrome浏览器调整
- 30. 跨浏览器的CSS问题(Safari浏览器与Chrome)
对于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