No importa qué versión del navegador IE sea, siempre será algo incompatible con los estándares web. Para los trabajadores del código, es naturalmente miserable. Para considerar el problema de compatibilidad de IE, ya sea que escriban CSS o JS, IE a menudo se trata de manera especial, lo que requiere cierto juicio. Este artículo no analiza cómo distinguir los estilos de IE, solo JS determina el navegador IE.
¡El método Javascript más corto del mundo para determinar el navegador IE proviene de Rusia! Se ha probado en varias versiones de IE y otros navegadores actualmente populares. Aunque Microsoft ha estado al tanto de los errores basados en IE, nunca los ha corregido.
<tipo de script='texto/javascript'> var es decir = !-[1,]; alerta (es decir); </script> |
El resultado de la ejecución del código anterior: devuelve verdadero en IE y falso en otros navegadores estándar. !-[1,], ¡solo 6 bytes!
Sin embargo, si se invierte el juicio, si el navegador estándar devuelve verdadero e IE devuelve falso, entonces se puede acortar en un byte.
<tipo de script='texto/javascript'> notIa = -[1,]; si(-[1,]){ // Código de navegador estándar }demás{ // Código sólo para IE } </script> |
Después de leer esto, ¿tienes curiosidad por saber cómo funcionan? Continúe leyendo a continuación.
Este error se produce porque IE agrega un elemento de matriz vacío al número total de elementos de la matriz.
[1,]. El navegador estándar de longitud devolverá 1 (basado en ECMAscript estándar, la coma al final de la matriz "," se ignorará, esto es para facilitar la visualización en una columna y la generación automática, etc.), pero IE regresará 2. Cuando imprima esta matriz, IE devolverá "1", que son dos elementos, mientras que otros navegadores estándar devolverán "1″".
Esto es fácil de verificar ejecutando el siguiente código en IE y FF:
<tipo de script='texto/javascript'> alerta([,]==','); //Estos son 8 caracteres para determinar IE </script> |
[1,] De hecho, la operación del navegador es toString () para convertir la cadena en una cadena, y - [1,] es forzar la conversión de la cadena en un número. IE devolverá NaN, pero desafortunadamente NaN no es un número, porque "1", después de [1,] se convierte en una cadena, contiene una coma. Otros navegadores estándar devolverán -1, que es un número distinto de cero.
Ya sabes, convertir NaN a tipo booleano devolverá falso, por lo que -[1,] devolverá falso en IE. Cualquier número distinto de 0 convertido a tipo booleano (como -1) devolverá verdadero en los navegadores estándar. Entonces obtenemos un resultado de juicio, !-[1,] devuelve verdadero en IE, pero falso en otros navegadores estándar. Esto también logra el propósito de distinguir y juzgar los navegadores IE.
Por supuesto, como se mencionó anteriormente, Microsoft conoce este error desde hace mucho tiempo, pero nunca lo ha solucionado, por lo que en el futuro > IE8 el navegador IE no está seguro de si seguirá funcionando, pero básicamente después de tantas generaciones, IE tiene No se ha reparado y es poco probable que IE se repare en el futuro.
Los siguientes son algunos otros códigos para distinguir y juzgar los navegadores IE, también puede consultar lo siguiente:
<tipo de script='texto/javascript'> // Opción de Dean Edwards: var es decir = /*@cc_on!@*/false; // Usa la línea comentada: var es decir //@cc_on=1; // Variación (variable más corta): var es decir = 'v'=='v'; // Opción a Gareth Hayes (ex poseedor del récord): var es decir = !+"v1"; </script> |