2015-02-02 14 views
5

Ich ziehe meine Haare über IE9/8; Ich versuche, mOxie zu verwenden, aber es erscheint als undefined, obwohl es sehr klar definiert ist.mOxie ist undefiniert, aber sehr klar definiert

wenn ich aus einer anderen Datei loggen Sie mOxie auf die Konsole, es protokolliert es perfekt in Chrome/IE10 +, aber feuern das gleiche Skript in IE9/8 Protokolle undefined.

Jedoch, in IE9/8, wenn ich 'mOxie' in der Konsole direkt eingeben, protokolliert es das Objekt korrekt.

http://jsfiddle.net/vxyayxy8/ - Führen Sie im IE10-Modus, und Sie werden sehen, dass es ein Objekt lädt. Führen Sie in IE9-Modus, und Sie werden sehen, dass es protokolliert undefined

Warum es ist, dass in IE9/8, wenn sie aus einer Datei protokolliert (dh nach Moxie enthalten ist), ist es undefined, wird aber in IE9/8 definiert ist, wenn die Konsole direkt benutzen?

Denken Sie daran, dass es in Chrome und IE10 + definiert ist.

Um die Theorie meiner Antwort unten in IE11, aber in IE9 Dokument-Modus zu testen, tun console.log({}) - ich bekomme undefined, die die Frage und die Antwort passt. Kannst du das reproduzieren?

+2

Ja, ich bin mit @BenjaminGruenbaum die Fehler Manifeste gegeben durch nur einschließlich der Datei, die Sie brauchen, um einen Fehler einreichen bei Github über - es gibt nichts, was wir tun können. –

+0

Ich kann das Problem nicht erneut darstellen. Ich öffnete in IE 11 und ging durch alle Dokumente Modi zwischen 11 und 8. Das Objekt wurde jedes Mal protokolliert. Ich habe auch in einer installierten Version von IE 9 getestet, und die Ergebnisse waren die gleichen - das Objekt wurde protokolliert. – Sampson

+0

@Loktar Diese spezielle Geige sollte in IE 9 keine Probleme haben. Sie können nicht in der Lage sein, eine Geige in IE 9 * author * zu machen, aber Sie können eine Geige in IE 9 im Allgemeinen zu einem allgemein annehmbaren Grad * testen. – Sampson

Antwort

6

Die Antwort unten ist immer noch legitim, aber anscheinend war es aufgrund eines IE-Bugs, dem ich jetzt versichert worden bin, behoben worden, also installiere ich Updates und hoffe auf das Beste. Danke für die Hilfe, Leute.

Ich habe festgestellt, dass console.log in IE8/9 Dokument-Modus (ja, die Devtools sind offen) Ergebnisse in undefined.

Warum sie ein Objekt als undefined protokollieren, ist jenseits von mir, aber das Problem besteht darin, console.dir zu verwenden, was zur korrekten Protokollierung eines Objekts auf der Konsole führt.

mOxie wurde nie undefined, es wurde gerade als solches protokolliert, durch IE's bizarre Implementierung der Konsole.

Obwohl ich Behauptungen bekomme, dass das Problem nicht reproduziert werden kann, kann ich immer noch die gleichen Ergebnisse erzielen, genau wie ich es getestet habe. http://jsfiddle.net/vxyayxy8/1/ - Dies zeigt, wie log undefined zurückgibt, vs dir, die das Objekt zurückgibt.

asdf

+2

Das kann unmöglich die Antwort sein; 'console.log' und' console.dir' bestimmen nicht die Gültigkeit einer Referenz. Sie übergeben entweder einen definierten Wert oder einen nicht definierten Wert. Die Methode, an die Sie es übergeben, ist hier nicht relevant. Bitte teilen Sie den Code, den Sie ausgeführt haben, zu dieser Schlussfolgerung. Hinweis: Ich arbeite am Internet Explorer-Team. – Sampson

+0

@ JonathanSampson zu sehen, wie Sie mein Problem sowieso nicht reproduzieren können, wird es nicht von Vorteil sein, es zu sehen, aber ich werde eine neue Geige machen, die den Unterschied darstellt. – ndugger

+0

Ich möchte helfen, die Ursache dieses Problems zu ermitteln; Angesichts der deterministischen Natur von Computern und JavaScript ist Ihre veröffentlichte Lösung jedoch nicht möglich. Ich meine aufrichtig keine Respektlosigkeit, aber "console.log" wird einfach nicht undefiniert für eine gültige Objektreferenz zurückgeben. – Sampson

Verwandte Themen