jQuery:仅针对 Safari

Posted

技术标签:

【中文标题】jQuery:仅针对 Safari【英文标题】:jQuery: Target ONLY Safari 【发布时间】:2011-10-14 12:19:06 【问题描述】:

我正在使用这段 jQuery 代码来定位 Safari:

if ($.browser.safari) 
    $('#div1').css('margin-top': '-22px');
    $('#div2').css('margin-top': '-17px');

奇怪的是,它还针对 Chrome(至少是 Mac 版本)。我可以使用哪些 jQuery 代码来忽略 Chrome 并仅针对 Safari?

我将不胜感激专家的建议。

【问题讨论】:

不幸的是,事实并非如此。我有一些东西在 Chrome 中显示得很好,而在 Safari 中却一团糟。 【参考方案1】:

(编辑使 Chrome 不能在用户代理中):

(Edit2 因为 Chrome for ios 在其用户代理中使用“CriOS”而不是“Chrome”):

if (
    navigator.userAgent.indexOf('Safari') != -1 && 
    navigator.userAgent.indexOf('Chrome') == -1 && 
    navigator.userAgent.indexOf('CriOS/') == -1
)   
   //i.e. apply safari class via jquery

附:您应该考虑使用Feature Detection 根据当前浏览器的功能更改您的网站,而不是检查您必须定期更新的用户代理。

【讨论】:

不,它也针对 Chrome。希望您能提供更多想法。 Chrom 的 userAgent 是 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.13 (Khtml, like Gecko) Chrome/0.2.149.27 Safari/525.13, Safari 的 userAgent 是 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_8; de-at) AppleWebKit/533.21.1 (KHTML, like Gecko) Version/5.0.5 Safari/533.21。 1。也许你应该这样做:if (navigator.userAgent.indexOf('Safari') != -1 && navigator.userAgent.indexOf('Chrome') == -1) 完美。最后一个建议正是我所需要的:以 Safari 为目标并以 Chrome 为目标。谢谢你,伍尔夫。 它没有在 iPhone 上的 Chrome 中验证。给予成功。有什么解决办法吗? Chrome for iOS 的名称中有“CriOS/”。因此,只需验证 UserAgent 中也不存在“CriOS/”。无论如何,问题/评论来自 2011 年。如今,您展示了使用特征检测而不是针对特定用户代理 :)【参考方案2】:
if (navigator.userAgent.indexOf('Safari') && !navigator.userAgent.indexOf('Chrome')) 
    // Yep, it's Safari =)
else 
    // Nope, it's another browser =(

【讨论】:

唉,那也是 Safari / Chrome。我需要的是只针对 Safari 的代码。有什么建议吗? 我编辑了它,可能是在你打字的时候:)。再试一次;)! 谢谢!非常有帮助,并证实了我几秒钟前从 Wulf 那里学到的东西。投票赞成。【参考方案3】:

特征检测优于浏览器嗅探,但我确实在 SO 上找到了这个解决方案:

Detect Safari using jQuery

【讨论】:

不鼓励链接到文章而不在您自己的答案中提供解决方案。 @Seano 你能把我链接到相关指南吗? 啊,你链接到了一篇 SO 文章。我的错。【参考方案4】:

试试这个:

$.browser.safari = ( $.browser.safari && /chrome/.test(navigator.userAgent.toLowerCase()) ) ? false : true;

我更喜欢这个,因为您正确设置了 jQuery 属性,然后可以在其他地方使用它,而无需经常检查 userAgent。

【讨论】:

【参考方案5】:

这可以很好地知道浏览器是否是 Safari。

if(navigator.userAgent.indexOf('Safari') !=-1 && navigator.userAgent.indexOf('Chrome') == -1)

    alert('its safari');
else
    alert('its not safari');

【讨论】:

以上是关于jQuery:仅针对 Safari的主要内容,如果未能解决你的问题,请参考以下文章

仅针对在模板生成的 html 列表中单击的项目的 Jquery 切换(可见/不可见)

11-移动端开发教程-zepto.js入门教程

使用 Jquery 在 Firefox 中为背景位置 y 设置动画

无法让(这个)jQuery 选择器工作

如何仅针对特定规则扫描java文件?

如何限制 Nativescript 仅针对 x86_64 进行编译?