Estoy llamando a una función como la siguiente haciendo clic en divs con una determinada clase.
¿Hay alguna forma en que pueda verificar al iniciar la función si un usuario está usando Internet Explorer y cancelarlo / cancelarlo si está usando otros navegadores para que solo se ejecute para usuarios de IE? Los usuarios aquí estarían en IE8 o versiones superiores, por lo que no necesitaría cubrir IE7 y versiones inferiores.
Si pudiera decir qué navegador están usando, sería genial, pero no es obligatorio.
Función de ejemplo:
$('.myClass').on('click', function(event)
{
// my function
});
javascript
jquery
internet-explorer
browser-detection
usuario2571510
fuente
fuente
With modern web development, it's bad practice to support non-Chromium-based browsers (with Safari not considered to be Chromium-based at all)
. Lo sentimos, pero esta locura debe terminar en algún momento y de alguna manera ...Respuestas:
Utilice el siguiente método de JavaScript:
Puede encontrar los detalles en el siguiente sitio de soporte de Microsoft:
Cómo determinar la versión del navegador a partir del script
Actualización: (soporte IE 11)
fuente
if (msie > 0)
es engañosa. Si no se encuentra el valor, la función indexOf () devuelve -1 no 0. Porif (msie > -1)
lo tanto , sería más explicativo.IE 11
: stackoverflow.com/a/21712356/114029/Edge\/|Trident\/|MSIE /.test(window.navigator.userAgent)
Sé que esto funciona en 10 y 11. Si puede verificar <IE9 y Edge, edite la respuesta.Han pasado varios años y el navegador Edge ahora usa Chromium como motor de renderizado.
La verificación de IE 11 sigue siendo una cosa, lamentablemente.
Aquí hay un enfoque más directo, ya que las versiones antiguas de IE deberían desaparecer.
Aquí está mi vieja respuesta (2014):
En Edge, la cadena del agente de usuario ha cambiado.
Uso de la muestra:
Cadena predeterminada de IE 10:
Cadena predeterminada de IE 11:
Cadena predeterminada de Edge 12:
Cadena predeterminada de Edge 13 (thx @DrCord):
Cadena predeterminada de Edge 14:
Cadena predeterminada de Edge 15:
Cadena predeterminada de Edge 16:
Cadena predeterminada de Edge 17:
Cadena predeterminada de Edge 18 (vista previa de información privilegiada):
Prueba en CodePen:
http://codepen.io/gapcode/pen/vEJNZN
fuente
Si todo lo que quiere saber es si el navegador es IE o no, puede hacer esto:
Actualización 1: un método mejor
Recomiendo esto ahora. Todavía es muy legible y es mucho menos código :)
Gracias a JohnnyFun en los comentarios por la respuesta abreviada :)
Actualización 2: Prueba para IE en CSS
En primer lugar, si puede, debe usar
@supports
sentencias en lugar de JS para verificar si un navegador admite una determinada función CSS.(Tenga en cuenta que IE no es compatible
@supports
en absoluto e ignorará cualquier estilo colocado dentro de una@supports
declaración).Si el problema no se puede resolver
@supports
, puede hacer esto:(Nota:
classList
es relativamente nuevo para JS y creo que, fuera de los navegadores IE, solo funciona en IE11. Posiblemente también IE10).Si está utilizando SCSS (Sass) en su proyecto, esto se puede simplificar para:
Actualización 3: Agregar Microsoft Edge (no recomendado)
Si también desea agregar Microsoft Edge a la lista, puede hacer lo siguiente. Sin embargo , no lo recomiendo, ya que Edge es un navegador mucho más competente que IE.
fuente
ms_ie = !!ua.match(/MSIE|Trident/)
~
tiene algún significado?Esto devuelve
true
para cualquier versión de Internet Explorer:El
userAgent
parámetro es opcional y su valor predeterminado es el agente de usuario del navegador.fuente
Así es como lo está haciendo el equipo de Angularjs ( v 1.6.5 ):
Luego, hay varias líneas de código dispersas a lo largo de su uso como un número como
y
fuente
document.documentMode
es compatible con IE8 +. Será'undefined'
para Edge o Chrome / FireFox .... Cambié este código avar IEver = window.document.documentMode || (window.attachEvent? 1 : 99);
tal que devuelva la versión exacta de IE para IE8 +, 99 para navegadores que no son IE (generalmente será un navegador moderno) y 1 para IE5-7 antiguo. Esto está escrito así porque generalmente necesitamos un trabajo especial solo para algunos IE antiguos. Entonces,if (IEver < 9) { ... }
significa que es un viejo IEPuede usar el objeto del navegador para detectar el navegador del usuario, no necesita jquery para ello
http://www.javascriptkit.com/javatutors/navigator.shtml
fuente
Usando las respuestas anteriores; Booleano de retorno simple y condensado:
var isIE = /(MSIE|Trident\/|Edge\/)/i.test(navigator.userAgent);
fuente
Método 01:
$ .browser quedó en desuso en jQuery versión 1.3 y se eliminó en 1.9
Método 02:
uso de comentarios condicionales
Método 03:
Método 04:
Use JavaScript / Detección manual
Link de referencia
fuente
.ie10
clase es una de las mejores opciones si está haciendo alguna corrección de CSS para ie10 solamente. A medida que Internet Explorer 10 agrega".ie10"
clase al elemento HTML<html class="ie10">
, puede usarlo como.ie10 .myclass {//some css here}
Solo quería comprobar si el navegador era IE11 o anterior, porque bueno, son basura.
fuente
fuente
Usando modernizr
fuente
O esta versión realmente corta, devuelve verdadero si los navegadores son Internet Explorer:
fuente
Otra función simple (aún legible por humanos) para detectar si el navegador es IE o no (ignorando Edge, que no está nada mal):
fuente
Si no desea utilizar el agente de uso, también puede hacerlo para verificar si el navegador es IE. El código comentado en realidad se ejecuta en los navegadores IE y convierte el "falso" en "verdadero".
fuente
Sé que esta es una vieja pregunta, pero en caso de que alguien vuelva a encontrarla y tenga problemas para detectar IE11, aquí hay una solución que funciona para todas las versiones actuales de IE.
fuente
he usado esto
fuente
Muchas respuestas aquí, y me gustaría agregar mi opinión. IE 11 estaba siendo tan imbécil con respecto a flexbox (vea todos sus problemas e inconsistencias aquí ) que realmente necesitaba una manera fácil de verificar si un usuario está usando cualquier navegador IE (hasta 11 inclusive) pero excluyendo Edge, porque Edge es realmente bastante agradable.
Basado en las respuestas dadas aquí, escribí una función simple que devuelve una variable booleana global que luego puede usar en la línea. Es muy fácil verificar IE.
De esta manera, solo tiene que hacer la búsqueda una vez, y almacena el resultado en una variable, en lugar de tener que buscar el resultado en cada llamada a la función. (Hasta donde sé, ni siquiera tiene que esperar a que el documento esté listo para ejecutar este código, ya que el agente de usuario no está relacionado con el DOM).
fuente
Intente esto si está utilizando la versión jquery> = 1.9 ,
Si usa jQuery versión <1.9 ($ .browser fue eliminado en jQuery 1.9) use el siguiente código:
fuente
La solución de @ SpiderCode no funciona con IE 11. Esta es la mejor solución que utilicé en adelante en mi código, donde necesito la detección del navegador para una función particular.
IE11 ya no informa como MSIE, de acuerdo con esta lista de cambios, es intencional para evitar la detección errónea.
Lo que puede hacer si realmente quiere saber que es IE es detectar el Tridente / cadena en el agente de usuario si navigator.appName devuelve Netscape, algo así como (el no probado);
Gracias a esta respuesta
fuente
A continuación encontré una forma elegante de hacer esto mientras busco en Google ---
fuente
Actualice la respuesta de SpiderCode para solucionar problemas donde la cadena 'MSIE' devuelve -1 pero coincide con 'Trident'. Solía devolver NAN, pero ahora devuelve 11 para esa versión de IE.
fuente
Puede detectar todo Internet Explorer (última versión probada 12).
Ver aquí https://jsfiddle.net/v7npeLwe/
fuente
Debería ver el resultado en la consola, utilice Chrome Inspect.
fuente
He colocado este código en la función de documento listo y solo se activa en Internet Explorer. Probado en Internet Explorer 11.
fuente
Esto solo funciona por debajo de la versión IE 11.
console.log("version number",ie_version);
fuente
Función de JavaScript para detectar la versión de Internet Explorer o Edge
fuente
Nigromancia
Para no depender de la cadena de agente de usuario, solo verifique algunas propiedades:
Además, esto detecta el nuevo Chredge (Anaheim):
Y esto detecta el cromo:
Y este Safari:
fuente
Intenta hacerlo así
fuente
Creo que te ayudará aquí
fuente
Puede usar
$.browser
para obtener información sobre el nombre, el proveedor y la versión.Ver http://api.jquery.com/jQuery.browser/
fuente