Quelle que soit la version du navigateur IE, elle est toujours quelque peu incompatible avec les standards du Web. Pour les codeurs, c'est naturellement misérable. Afin de considérer le problème de compatibilité d'IE, qu'il s'agisse d'écrire du CSS ou du JS, IE est souvent traité de manière spéciale, ce qui nécessite un certain jugement. Cet article n'explique pas comment distinguer les styles d'IE, seul JS détermine le navigateur IE.
La méthode Javascript la plus courte au monde pour déterminer le navigateur IE vient de Russie ! Il a été testé sur différentes versions d'IE et d'autres navigateurs actuellement populaires. Bien que Microsoft ait été conscient des bogues basés sur IE, il ne les a jamais corrigés.
<script type='text/javascript'> var c'est à dire = !-[1,]; alerte (c'est-à-dire); </script> |
Le résultat de l'exécution du code ci-dessus : renvoie vrai sous IE et renvoie faux sous d'autres navigateurs standard. !-[1,], seulement 6 octets !
Cependant, si le jugement est inversé, si le navigateur standard renvoie vrai et qu'IE renvoie faux, il peut alors être raccourci d'un octet.
<script type='text/javascript'> notIe = -[1,]; si(-[1,]){ // Code du navigateur standard }autre{ // Code pour IE uniquement } </script> |
Après avoir lu ceci, êtes-vous curieux de savoir comment cela fonctionne ? Veuillez continuer à lire ci-dessous.
Ce bogue se produit car IE ajoute un élément de tableau vide au nombre total d'éléments de tableau.
[1,] Les navigateurs standards de longueur renverront 1 (basé sur le standard ECMAscript, la virgule "," à la fin du tableau sera ignorée, ceci pour faciliter l'affichage dans une colonne et la génération automatique, etc.), mais IE reviendra 2. Lorsque vous imprimez ce tableau, IE renverra "1", qui correspond à deux éléments, tandis que les autres navigateurs standard renverront "1".
Ceci est facile à vérifier en exécutant le code suivant dans IE et FF :
<script type='text/javascript'> alerte([,]==','); //C'est 8 caractères pour déterminer IE </script> |
[1,] En fait, le fonctionnement du navigateur est toString() pour convertir la chaîne en chaîne, et -[1,] consiste à forcer la chaîne à un nombre. IE renverra NaN, mais malheureusement, NaN n'est pas un nombre, car "1", après que [1,] est converti en chaîne, contient une virgule. Les autres navigateurs standards renvoient -1, qui est un nombre différent de zéro.
Vous savez, la conversion de NaN en booléen renverra false, donc -[1,] renverra false sous IE. Tout nombre différent de 0 converti en type booléen (tel que -1) renverra vrai dans les navigateurs standard. Nous obtenons donc un résultat de jugement, !-[1,] renvoie vrai sous IE, mais renvoie faux sous d'autres navigateurs standards. Cela permet également de distinguer et de juger les navigateurs IE.
Bien sûr, comme mentionné précédemment, Microsoft est au courant de ce bug depuis longtemps, mais ne l'a jamais corrigé, donc à l'avenir > IE8 Le navigateur IE n'est pas sûr qu'il fonctionnera toujours, mais fondamentalement, après tant de générations, IE a n'a pas été réparé et il est peu probable qu'IE le soit à l'avenir.
Voici quelques autres codes permettant de distinguer et de juger les navigateurs IE. Vous pouvez également vous référer aux éléments suivants :
<script type='text/javascript'> // Option de Dean Edwards : var c'est à dire = /*@cc_on!@*/false; // Utilisez la ligne commentée : var c'est-à-dire //@cc_on=1; // Variation (variable plus courte) : var c'est à dire = 'v'=='v'; // Option à Gareth Hayes (ancien détenteur du record) : var c'est à dire = !+"v1"; </script> |