2013-02-04 35 views
19

Ich habe gerade angefangen, mit IE10 auf Win8 zu spielen und stieß auf Problem. Die Konsole für Entwicklerwerkzeuge scheint nicht zu funktionieren, wenn der Dokumentmodus auf Standards festgelegt ist. Ich habe sowohl mit dem Browser-Modus als auch dem Dokument-Modus herumgespielt, und die Konsole funktioniert, wenn sie als IE9-Standards festgelegt ist, aber sie auf "Standards" setzt, die Standardeinstellung für IE10, Konsole ist nicht definiert. Irgendwelche Ideen?IE10 console.log funktioniert nicht

Dies ist kein Duplikat. Beim Testen ist die Entwicklerkonsole geöffnet. Wenn Sie den Doc-Modus auf IE9-Standards umstellen und erneut laden, wird die Konsolenausgabe wie erwartet angezeigt. Die Rückkehr zu IE10-Standards zeigt keine Konsolenausgabe an. Das Debugging zeigt, dass die Konsole undefiniert ist, was console.log auf eine leere Funktion setzt, um das undefined zu behandeln. Ich bin neugierig, warum die Konsole im IE10-Standardmodus nicht definiert ist.

Ich verwende Win8 in einer VirtualBox. Meine Seite ist HTML4 Markup mit entsprechenden Doctype.

+9

Zum Laden der Seite * müssen die Entwicklerwerkzeuge * geöffnet sein. Siehe [hier] (http://stackoverflow.com/questions/10415519/does-ie9-enable-something-when-using-developer-tools/10415712#10415712) – jbabey

+0

Developer Tools sind beim Laden der Seite geöffnet. – James

+0

So öffnen Sie die Seite, drücken Sie F12, um die Entwickler-Tools zu öffnen, drücken Sie dann F5, um die Seite neu zu laden, und die 'Konsole' wird immer noch als 'undefiniert' angezeigt? – jbabey

Antwort

5

definieren Sie es!

if (typeof console == "undefined") { 
    this.console = {log: function() {}}; 
} 

siehe: 'console' is undefined error for Internet Explorer

+0

Es hört sich an, als ob das OP diese Problemumgehung kennt, ist aber neugierig, warum 'console.log' in bestimmten Modi nicht richtig funktioniert. – jahroy

+0

Dies wird bereits durchgeführt. Hinweis "Das Debuggen zeigt, dass die Konsole nicht definiert ist. Dadurch wird console.log auf eine leere Funktion gesetzt, um das undefined zu behandeln." – James

7

Der Grund, warum console.log(); nicht definiert ist, weil das ist, wie Standards-Modus arbeitet. IE 8 hat einen Kompatibilitätsmodus, der es buchstäblich in IE 7 umwandelt, wodurch das gesamte Verständnis von zu IE 8 hinzugefügten Funktionen entfernt wird. Die Konsole wurde in IE 10 hinzugefügt, so dass es beim Ausführen im Standardmodus sinnvoll wäre, Fehler auszulösen.

Dieses Meta-Tag hier wird IE zwingen, in der neuesten Version zu laufen, die Sie installiert haben (Deaktivieren von Standards und Kompatibilitätsmodus). Dies ist die einzige Möglichkeit, Ihre Konsole in IE 10 im Standardmodus zu definieren - indem Sie den Standardmodus deaktivieren.

+2

Microsoft erklärt, dass IE = Kante "ist funktionell äquivalent zur Verwendung des HTML5 Doctype", so ist genug. Siehe http://msdn.microsoft.com/en-US/library/jj676915.aspx –

+5

Auf welchem ​​Planeten macht das "Sinn"? Was sinnvoll ist, ist, dass Microsoft einen grauenhaften Browser erzeugt, der niemals den tatsächlichen "Standards" –

+3

entspricht. Es macht Sinn, weil IE 8 Fehler behandelt. Es stürzt einfach den Rest dieses Javascript ab. Wenn Sie eine 'console.log()' am Anfang einer jQuery-Datei platzieren, wird jQuery nicht auf der Seite geladen. Wenn der IE 10 im Standardmodus würde, würde die Ausführung von Fehlern fälschlicherweise dazu führen, dass er anders als IE 8 funktioniert. Außerdem würde '' tanguy_k dazu führen, dass der IE 9 und darunter standardmäßig in 'loose.dtd' geht sei 'transitional.dtd', ich vergesse was und könnte dazu führen, dass das CSS der Seite bricht. – Andrew

Verwandte Themen