Если бы не Опера Мини

Вопрос довольно простой, но я все равно хочу его задать.

Этот код говорит нам, что браузер пользователя — известная 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 условие.

Как сделать правильный короткий условный оператор для if not Opera mini, then?

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


person Jasper    schedule 23.02.2013    source источник
comment
На самом деле этот код говорит вам только о том, что переданный заголовок пользовательского агента содержит Opera Mini.   -  person Oded    schedule 24.02.2013
comment
en.wikipedia.org/wiki/%3F:#JavaScript   -  person RGdev    schedule 24.02.2013
comment
вау, пожалуйста не реализуйте логическое отрицание с тернарным оператором.   -  person Eevee    schedule 24.02.2013


Ответы (4)


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

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

Это вернет true, если НЕ найдет «Opera Mini» в строке пользовательского агента.

person Simply Kiwi    schedule 23.02.2013
comment
вернет ли он true только в Opera Mini? - person Jasper; 24.02.2013
comment
@Steve - вернет true, если пользовательский агент не содержит Opera Mini. Похоже, вам действительно нужно прочитать о indexOf. - person Oded; 24.02.2013

Из документа Opera:

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

  1. Изучите строку пользовательского агента

  2. Проверить наличие объекта Operamini

т.е. если не Opera Mini это:

if (!window.operamini){}

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

person hexalys    schedule 03.06.2015

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

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

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

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

person dfsq    schedule 23.02.2013
comment
Кто-то не согласен? Комментарии? - person dfsq; 21.03.2013

https://dev.opera.com/articles/opera-mini-and-javascript/

var isOperaMini = Object.prototype.toString.call(window.operamini) === "[object OperaMini]"
person Hemant Patel    schedule 02.06.2016