Egal um welche Version des IE-Browsers es sich handelt, er ist immer etwas inkompatibel mit Webstandards. Für Code-Worker ist es natürlich miserabel, das Kompatibilitätsproblem des IE zu berücksichtigen, egal ob CSS oder JS geschrieben werden, IE wird oft speziell behandelt, was ein gewisses Maß an Urteilsvermögen erfordert. In diesem Artikel wird nicht erläutert, wie die Stile des IE unterschieden werden, sondern nur JS bestimmt den IE-Browser.
Die weltweit kürzeste Javascript-Methode zur Bestimmung des IE-Browsers kommt aus Russland! Es wurde auf verschiedenen Versionen des IE und anderen derzeit gängigen Browsern getestet. Microsoft waren sich zwar IE-basierte Fehler bewusst, diese wurden jedoch nie behoben.
<script type='text/javascript'> var dh = !-[1,]; Warnung(dh); </script> |
Das obige Codeausführungsergebnis: gibt unter IE true und unter anderen Standardbrowsern false zurück. !-[1,], nur 6 Bytes!
Wenn das Urteil jedoch umgekehrt wird, wenn der Standardbrowser „true“ und der IE „false“ zurückgibt, kann es um ein Byte gekürzt werden.
<script type='text/javascript'> notIe = -[1,]; if(-[1,]){ // Standard-Browsercode }anders{ // Code nur für IE } </script> |
Sind Sie nach dem Lesen neugierig, wie diese funktionieren? Bitte lesen Sie weiter unten.
Dieser Fehler tritt auf, weil IE der Gesamtzahl der Array-Elemente ein leeres Array-Element hinzufügt.
[1,]. Länge Standardbrowser geben 1 zurück (basierend auf Standard-ECMAscript wird das Komma „“, am Ende des Arrays ignoriert, um die Anzeige in einer Spalte und die automatische Generierung usw. zu erleichtern), aber IE gibt 2 zurück. Wenn Sie dieses Array drucken, gibt der IE „1“ zurück, also zwei Elemente, während andere Standardbrowser „1“ zurückgeben.
Dies lässt sich leicht überprüfen, indem Sie den folgenden Code in IE und FF ausführen:
<script type='text/javascript'> alarm([,]==','); //Dies sind 8 Zeichen zur Bestimmung des IE </script> |
[1,] Tatsächlich besteht die Operation des Browsers darin, mit toString () die Zeichenfolge in eine Zeichenfolge umzuwandeln, und -[1,] die Zeichenfolge in eine Zahl umzuwandeln. IE gibt NaN zurück, aber leider ist NaN keine Zahl, da „1“, nachdem [1,] in einen String umgewandelt wurde, ein Komma enthält. Andere Standardbrowser geben -1 zurück, was eine Zahl ungleich Null ist.
Sie wissen, dass die Konvertierung von NaN in einen Booleschen Wert „false“ zurückgibt, also wird „-[1,]“ unter IE „false“ zurückgeben. Jede in einen booleschen Typ konvertierte Zahl ungleich 0 (z. B. -1) gibt unter Standardbrowsern „true“ zurück. Wir erhalten also ein Beurteilungsergebnis: !-[1,] gibt unter IE true zurück, unter anderen Standardbrowsern jedoch false. Dadurch wird auch der Zweck der Unterscheidung und Beurteilung von IE-Browsern erreicht.
Natürlich ist Microsoft, wie bereits erwähnt, dieser Fehler eigentlich schon seit langem bekannt, hat ihn aber nie behoben, daher ist sich der IE-Browser in Zukunft nicht sicher, ob er noch funktionieren wird, aber nach so vielen Generationen hat der IE dies im Grunde getan nicht repariert, und es ist unwahrscheinlich, dass IE in Zukunft repariert wird.
Im Folgenden finden Sie einige andere Codes zur Unterscheidung und Beurteilung von IE-Browsern. Sie können sich auch auf Folgendes beziehen:
<script type='text/javascript'> // Option von Dean Edwards: var ie = /*@cc_on!@*/false; // Verwenden Sie die kommentierte Zeile: var ie//@cc_on=1; // Variation (kürzere Variable): var ie = 'v'=='v'; // Option an Gareth Hayes (ehemaliger Rekordhalter): var ie = !+"v1"; </script> |