2013-02-23 2 views
2

Этот вопрос довольно прост, но я хочу спросить его в любом случае.Если не Opera Mini

Этот код говорит нам, что браузер пользователя является известным Opera Mini

var isOperaMini = (navigator.userAgent.indexOf('Opera Mini') > -1); 

Так что я могу использовать его таким образом:

if (navigator.userAgent.indexOf('Opera Mini') > -1) 
    alert('hey! your browser is buggy'); 

Это if Opera Mini, then условно.

Как сделать правым коротким условным для ?

Я не уверен, как играть с -1 целым числом.

+0

На самом деле, этот код только говорит Вам, что принятый в заголовке агента пользователя содержит 'Opera Mini'. – Oded

+0

http://en.wikipedia.org/wiki/%3F:#JavaScript – RGdev

+1

wow, _please_ не реализуют логическое отрицание с помощью тернарного оператора. – Eevee

ответ

3

Вы можете просто изменить его на

if (navigator.userAgent.indexOf('Opera Mini') == -1) 

Это возвращает истину, если он не найдет «Opera Mini» в строке агента пользователя

+0

будет ли он возвращать 'true' ** только ** в Opera Mini? – Jasper

+0

@Steve - он вернет true, если пользовательский агент не содержит 'Opera Mini'. Похоже, вам действительно нужно прочитать о ['indexOf'] (https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/String/indexOf). – Oded

0

Других варианты (возможно, менее читаемые) с помощью ~ оператора:

if (~navigator.userAgent.indexOf('Opera Mini')) { 
    // opera mini 
} 

if (!~navigator.userAgent.indexOf('Opera Mini')) { 
    // not opera mini 
} 

Однако это, вероятно, лучше для вас, чтобы сравнить с -1, пока вы не знакомы с синтаксисом.

+0

Кто-то не согласен? Комментарии? – dfsq

3

Из Opera doc:

обнаруживая Opera Mini: 2 подхода: Вы можете:

  1. Проверьте строку агента пользователя

  2. Проверка на присутствие объект operamini

т.е. если нет Opera Mini является:

if (!window.operamini){}

Короткий, простой и надежный. В отличие от пользовательского агента, способного обманывать.

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