Как определить браузер Opera с помощью JavaScript

Я хочу решить, что браузер клиентских машин в Opera или не использовании JavaScript, как сделать это?

20
задан brasofilo 27 January 2019 в 20:31
поделиться

4 ответа

Объект навигатор содержит всю необходимую информацию. Это должно сделать:

navigator.userAgent.indexOf("Opera");
5
ответ дан 29 November 2019 в 22:38
поделиться

В Prototype.js, мы используем этот вывод:

var isOpera = Object.prototype.toString.call(window.opera) == '[object Opera]';

Это, по сути, проверяет, что объект window.opera существует и его внутренним значением [[Class]] является "Opera". Это более надёжная проверка, чем просто проверка существования window.opera, так как вероятность того, что какая-то несвязанная глобальная переменная opera окажется на пути и приведёт к ложным срабатываниям, гораздо меньше.

Говоря о несвязанной глобальной переменной, помните, что в MSHTML DOM, например, элементы могут разрешаться по id/name глобально; это означает, что наличие чего-то вроде foo] в разметке приведет к тому, что window.opera будет ссылаться на этот якорный элемент. Там есть ваше ложное срабатывание...

Другими словами, проверим значение [[Класс]], а не просто существование.

И конечно, всегда дважды подумайте, прежде чем вынюхивать для браузера. Часто есть лучшие способы решения проблемы ;)

P.S. Есть вероятность, что в будущих версиях Opera изменится [[Class]] из window.opera, но это кажется маловероятным.

.
8
ответ дан 29 November 2019 в 22:38
поделиться

не возражаете против использования jQuery?

тогда вы можете использовать jQuery.browser ( см. колонку )

Но ребята из jQuer рекомендуют не использовать это.

Мы не рекомендуем использовать это свойство, пожалуйста, попробуйте использовать функцию вместо обнаружения (см. jQuery.support)

Edit:

For Mootools: use window.opera (см. documentation)

.
0
ответ дан 29 November 2019 в 22:38
поделиться
if(window.opera){
    //do stuffs, for example
    alert(opera.version()); //10.10 
}

Не шучу, есть объект Opera в Opera Browser.

Вы можете подумать, объект Opera переопределен, но Navigator тоже переопределен.

Обновление :

Чтобы получить более точный результат, вы можете сделать понравиться

if (window.opera && opera.toString() == "[object Opera]"){
    //do stuffs, tested on opera 10.10
}

, и я заметил, что Opera есть как addEventListener, так и Batchevent, так что есть и другой способ

if (window.addEventListener && window.attachEvent){
    //do stuffs, tested on opera 10.10
}
18
ответ дан 29 November 2019 в 22:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: