jQuery:只针对Safari

问题描述 投票:11回答:5

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

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

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

我将非常感谢专家的建议。

jquery safari conditional
5个回答
32
投票

(编辑以便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根据当前浏览器的操作来更改您的网站,而不是检查用户代理,您必须定期更新。


4
投票
if (navigator.userAgent.indexOf('Safari') && !navigator.userAgent.indexOf('Chrome')) {
    // Yep, it's Safari =)
}else {
    // Nope, it's another browser =(
}

1
投票

功能检测比浏览器嗅探更受欢迎,但我确实在SO上找到了这个解决方案:

Detect Safari using jQuery


0
投票

试试这个:

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

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


0
投票

这很好用于了解浏览器是否为Safari。

if(navigator.userAgent.indexOf('Safari') !=-1 && navigator.userAgent.indexOf('Chrome') == -1)
{
    alert('its safari');
}else{
    alert('its not safari');
}
© www.soinside.com 2019 - 2024. All rights reserved.