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 切换(可见/不可见)