JQuery: целевой ТОЛЬКО Safari - PullRequest
11 голосов
/ 27 июля 2011

Я использую этот бит кода jQuery для целевой Safari:

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

Как ни странно, он также нацелен на Chrome (по крайней мере, для Mac)Какой код jQuery я могу использовать, чтобы игнорировать Chrome и ориентироваться только на Safari?

Буду признателен за консультацию специалиста.

Ответы [ 5 ]

32 голосов
/ 27 июля 2011

(отредактируйте так, чтобы Chrome не входил в пользовательский агент):

(Edit2, потому что Chrome для 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
}

P.S. Вам следует рассмотреть возможность использования Feature Detection для изменения вашего веб-сайта в соответствии с тем, что может делать текущий браузер, вместо проверки пользовательских агентов, которые вы должны регулярно обновлять.

4 голосов
/ 27 июля 2011
if (navigator.userAgent.indexOf('Safari') && !navigator.userAgent.indexOf('Chrome')) {
    // Yep, it's Safari =)
}else {
    // Nope, it's another browser =(
}
1 голос
/ 27 июля 2011

Обнаружение функций предпочтительнее, чем поиск в браузере, но я нашел это решение для SO:

Обнаружение Safari с помощью jQuery

0 голосов
/ 17 ноября 2017

Это прекрасно работает, чтобы узнать, является ли браузер Safari.

if(navigator.userAgent.indexOf('Safari') !=-1 && navigator.userAgent.indexOf('Chrome') == -1)
{
    alert('its safari');
}else{
    alert('its not safari');
}
0 голосов
/ 27 июля 2011

Попробуйте это:

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

Мне нравится это немного лучше, потому что вы правильно устанавливаете свойство jQuery, а затем можете использовать его в другом месте без постоянной проверки userAgent.

...