Quiero determinar que el navegador de las máquinas del cliente funcione o no con javascript.cómo determinar el navegador de la ópera usando javascript
Respuesta
El objeto navigator
contiene toda la información que necesita. Esto debería hacer:
navigator.userAgent.indexOf("Opera");
Debe usar detección de funciones siempre que sea posible. Consulte la respuesta de @ S.Mark. –
Acepto que debe usar detección de características siempre que sea posible, pero esta sigue siendo una respuesta correcta a la pregunta explícita de * cómo determinar si un cliente está ejecutando opera *. la pregunta era * cómo disuadir el mío si esta función específica de la ópera existe *, entonces sería preferible verificar esa función. La sugerencia de S.Mark, si bien es bastante conveniente (también la elevé), difícilmente es la detección de características. Se basa en un objeto que solo está presente en la ópera, y lo comprueba, sí, pero no verifica la función * specific * (que desconocemos) que subyace al requisito de verificación de opera. –
Justin ... La cadena de navegación está diseñada para la detección de navegadores. Usar la detección de características para detectar navegadores es aún peor que usar la detección de navegador simple. – James
¿te importa usar jQuery?
entonces puede utilizar jQuery.browser
(see documnentation)
Pero los jQuery-chicos recomendar no utilizar este.
No recomendamos el uso de este propiedad, intenta utilizar la detección de características lugar (ver jQuery.support)
Editar:
Para Mootools: utilizar window.opera
(ver documentation)
if(window.opera){
//do stuffs, for example
alert(opera.version()); //10.10
}
No es broma, hay un objeto opera
en el navegador Opera.
Puede pensar que el objeto opera
es reemplazable, pero navigator
también se puede modificar.
ACTUALIZACIÓN:
Para obtener resultados más precisos, se podría hacer como
if (window.opera && opera.toString() == "[object Opera]"){
//do stuffs, tested on opera 10.10
}
Y me di cuenta, Opera tiene tanto addEventListener y attachEvent, por lo que también es otra manera como
if (window.addEventListener && window.attachEvent){
//do stuffs, tested on opera 10.10
}
+1 para detección de características –
@Justin, esto no es detección de características. En todo caso, es la detección del navegador basada en características. Ver http://www.nczonline.net/blog/2009/12/29/feature-detection-is-not-browser-detection/ ... También 'window.opera && Object.toString.call (window.opera) == "[object Opera]" 'sería una comprobación más sólida. – James
Gracias J-P, pero 'Object.toString.call (window.opera)' no funciona en mi opera 10.10, así que actualicé el mío para el de trabajo. – YOU
En Prototype.js, we use this inference:
var isOpera = Object.prototype.toString.call(window.opera) == '[object Opera]';
Esto esencialmente comprueba que el objeto window.opera
existe y su valor interno [[Class]] es "Opera". Esta es una prueba más sólida que la simple comprobación de la existencia de window.opera
, ya que hay muchas menos posibilidades de que una variable opera
global no relacionada se interponga y dé lugar a falsos positivos.
Hablando de variable global no relacionada, recuerde que en MSHTML DOM, por ejemplo, los elementos se pueden resolver por ID/nombre globalmente; esto significa que la presencia de algo como <a name="opera" href="...">foo</a>
en un marcado dará como resultado window.opera
haciendo referencia a ese elemento de anclaje. Ahí está su falso positivo ...
En otras palabras, pruebe el valor [[Class]], no solo la existencia.
Y, por supuesto, siempre piénselo dos veces antes de oler por el navegador. A menudo hay mejores formas de resolver un problema;)
P.S.Existe la posibilidad de versiones futuras de Opera cambiando [[Class]] de window.opera
, pero eso parece poco probable.
No funciona más –
Ahora que Opera usa el motor de renderizado de Chrome, la solución aceptada ya no funciona.
la cadena de agente de usuario muestra así:
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.52 Safari/537.36 OPR/15.0.1147.132
El único identificador para Opera es la parte OPR
.
Aquí está el código que uso, que debe coincidir con la antigua Opera o la nueva Opera. Esto hace que la Opera
var un valor booleano (verdadero o falso):
var Opera = (navigator.userAgent.match(/Opera|OPR\//) ? true : false);
Gracias. Funciona. Detecta Opera. – dnns
¿O? '/ Opera | OPR \ //. Test (navigator.userAgent)' –
Las respuestas anteriores ya no funcionan en el nuevo Opera 30. Desde Opera ahora usan cromo. Por favor, utilice el siguiente:
var isChromium = window.chrome,
isOpera = window.navigator.userAgent.indexOf("OPR") > -1 || window.navigator.userAgent.indexOf("Opera") > -1;
if(isChromium !== null && isOpera == true) {
// is Opera (chromium)
} else {
// not Opera (chromium)
}
El nuevo Opera 30 versión ahora utiliza plenamente cromo y también cambiaron su userAgent
a OPR
- 1. PHP: ¿cómo determinar si el navegador admite javascript en PHP?
- 2. Minimizar la ventana del navegador usando javascript
- 3. Determinar si el navegador es compatible con la impresión
- 4. Obtener la versión del navegador de IE usando Javascript
- 5. ¿Cómo determinar una 'altura de línea' usando Javascript (jQuery)?
- 6. Usando javascript para detectar el tipo de navegador
- 7. ¿Cómo determinar el tiempo en el sitio en Javascript?
- 8. ¿Cargar imagen local en el navegador usando JavaScript?
- 9. inhabilitando el caché del navegador en php o usando javascript
- 10. ¿Cómo saber la dirección IP del servidor (usando JavaScript) a la que está conectado el navegador?
- 11. Conexión al Socket TCP desde el navegador usando Javascript
- 12. ¿Cómo escribo contenido en otra ventana del navegador usando Javascript?
- 13. Determinar la distancia usando mapkit
- 14. ¿Cómo determinar la impresora predeterminada usando WPF?
- 15. ¿Cómo restablecer la lista desplegable <select> en el botón 'volver' del navegador usando Javascript?
- 16. Cómo determinar el navegador predeterminado de Windows (en la parte superior del menú de inicio)
- 17. Ver eventos de Javascript en el navegador
- 18. determinar la profundidad de la pila en javascript mediante javascript
- 19. Solicitud del archivo de descarga del navegador usando JavaScript
- 20. Imprimir desde el navegador javascript?
- 21. ¿Cuál es la forma más precisa de determinar la geolocalización del usuario en el navegador?
- 22. Cómo determinar el directorio de la extensión
- 23. ¿Determinar el nombre de dominio en JavaScript?
- 24. cross-browser Onunload y Onbeforeunload? (particularmente ópera 11)
- 25. ¿Cómo puedo determinar si el usuario o el navegador han ingresado datos en un formulario?
- 26. Detener la ejecución de JavaScript sin bloquear el navegador
- 27. Javascript: ¿cómo emular la implementación de la cookie del navegador?
- 28. ¿Cómo puedo determinar el número de línea actual en JavaScript?
- 29. ¿Cómo puedo determinar el tipo de elemento HTML en JavaScript?
- 30. ¿Cómo desencadenar el evento/función de vuelta del navegador usando JavaScript?
¿Por qué necesita para detectar Opera? Y, a partir de su pregunta, parece que desea detectar usuarios sin JS ... lo cual es algo imposible usando JS. – James
necesito llamar a una función js solo si hay un navegador opera eso es lo que estoy aquí ...... – Avinash
Siempre que sea posible, trate de detectar el problema y no el navegador. Admito que esto a veces es difícil :( – hallvors