2015-04-21 14 views
0

Я настраиваю простой браузер, который должен вызывать предупреждение в браузере пользователя, если браузер не поддерживается.условно не работает должным образом

Я установил глобальную переменную в application.haml с использованием библиотеки под названием detect.js:

:javascript var ua = detect.parse(navigator.userAgent); и я выплюнуть в консоли, чтобы убедиться, что он ловит правильные данные, и это:

console.log(ua.browser.family);

и в base.coffee Я установил условное:

if ua.browser.family != 'Chrome' || 'Safari' || 'Firefox' || 'Chrome Canary' alert('Your browser is not supported.')

Теперь предупреждение появится в любом браузере, даже если это Chrome, Safari, Firefox или Chrome Canary.

Ищете вторую пару глаз ... Что мне не хватает, чтобы заставить это работать правильно?

+0

Nevermind, просто заметил, что это был файл coffeescript –

+0

Вставка в парсеры бросает мне сообщение об ошибке. не поддерживает. coffee этот синтаксис? Я пробовал «предупреждать», что этот браузер не поддерживается », если ua.browser.family isnt« Safari »или« Chrome »или« Firefox », и это не работает. – Dear1ofGdBear

+0

Это не дает никаких утверждений parens if. На первый взгляд я не видел кофейную бирку. Извини за это. –

ответ

0

Он должен читать if ua.browser.family != 'Chrome' && ua.browser.family != 'Safari' && ua.browser.family != 'Firefox' && ua.browser.family != 'Chrome Canary'

+0

, вы не можете использовать &&, она всегда будет ложной .. так как тип будет либо одним из –

1
if ((ua.browser.family != 'Chrome') || (ua.browser.family !='Safari') 
|| (ua.browser.family !='Firefox') || (ua.browser.family !='Chrome Canary')) 
    alert('Your browser is not supported.') 

попробовать это ..

4

Оператор 'Chrome' || 'Safari' || 'Firefox' || 'Chrome Canary' всегда будет вычисляться ` 'Chrome', так что это не будет работать. Вы должны проверить полное условие для каждой строки:

if ua.browser.family != 'Chrome' || ua.browser.family != 'Safari' || ua.browser.family != 'Firefox' || ua.browser.family != 'Chrome Canary' 

Coffescript имеет более короткий способ проверить, если массив содержит элемент, хотя:

if ua.browser.family in ['Chrome', 'Safari', 'Firefox', 'Chrome Canary'] 
+0

спасибо! Хорошо, я вижу. что случилось. Условное значение должно быть && вместо | | чтобы он работал правильно, а также сделанные вами изменения (тестирование условий для каждой строки). – Dear1ofGdBear

+0

@ Dear1ofGdBear вы не можете использовать && всегда будет ложным .. так как тип будет либо одним из них –

+0

@DanyalSandeelo, похоже, работает для меня. Я опробовал несколько тестовых примеров и их хорошее, но я вижу вашу логику. Интересно – Dear1ofGdBear

Смежные вопросы