Unter welchen Umständen ist window.console.log
in Internet Explorer 9 definiert?
Auch wenn window.console.log
definiert window.console.log.apply
und window.console.log.call
undefiniert sind. Warum ist das?
[Verwandte Frage zu IE8: Was ist mit console.log in IE8 passiert? .]
javascript
logging
internet-explorer-9
mloughran
quelle
quelle
Antworten:
In Internet Explorer 9 (und 8) wird das
console
Objekt nur angezeigt, wenn die Entwicklertools für eine bestimmte Registerkarte geöffnet werden. Wenn Sie das Entwickler-Tool-Fenster für diese Registerkarte ausblenden,console
bleibt das Objekt für jede Seite, zu der Sie navigieren, verfügbar. Wenn Sie eine neue Registerkarte öffnen, müssen Sie auch die Entwicklertools für diese Registerkarte öffnen, damit dasconsole
Objekt verfügbar gemacht wird.Das
console
Objekt ist nicht Teil eines Standards und eine Erweiterung des Dokumentobjektmodells. Wie andere DOM-Objekte wird es als Host-Objekt betrachtet undObject
muss weder vonFunction
nativen ECMAScript-Funktionen und -Objekten erben noch von diesen Methoden erben . Dies ist der Grundapply
undcall
für diese Methoden nicht definiert. In IE 9 wurden die meisten DOM-Objekte verbessert, um von nativen ECMAScript-Typen zu erben. Da die Entwicklertools als Erweiterung des Internet Explorer (wenn auch als integrierte Erweiterung) betrachtet werden, haben sie eindeutig nicht die gleichen Verbesserungen wie der Rest des DOM erhalten.Für das, was es wert ist, können Sie immer noch einige
Function.prototype
Methoden aufconsole
Methoden mit ein wenigbind()
Magie anwenden:quelle
console
Objekt von Firebug .Eine einfache Lösung für dieses Problem mit console.log besteht darin, am Anfang Ihres JS-Codes Folgendes zu definieren:
Dies funktioniert bei mir in allen Browsern. Dadurch wird eine Dummy-Funktion für console.log erstellt, wenn der Debugger nicht aktiv ist. Wenn der Debugger aktiv ist, wird die Methode console.log definiert und normal ausgeführt.
quelle
Ich weiß, dass dies eine sehr alte Frage ist, aber ich bin der Meinung, dass dies eine wertvolle Alternative zum Umgang mit dem Konsolenproblem darstellt. Platzieren Sie den folgenden Code vor jedem Aufruf der Konsole. * (Also Ihr erstes Skript).
Referenz:
https://github.com/h5bp/html5-boilerplate/blob/v5.0.0/dist/js/plugins.js
quelle
console.log wird nur definiert, wenn die Konsole geöffnet ist. Wenn Sie in Ihrem Code danach suchen möchten, stellen Sie sicher, dass Sie in der Fenstereigenschaft danach suchen
Dies löst eine Ausnahme in IE9 aus und funktioniert nicht richtig. Mach das nicht
quelle
Nachdem ich den Artikel aus dem obigen Kommentar von Marc Cliament gelesen habe, habe ich jetzt meine universelle Cross-Browser-Funktion console.log so geändert:
quelle
Function.prototype.apply.call(console.log, console, arguments);
Ich möchte erwähnen, dass IE9 den Fehler nicht auslöst, wenn Sie console.log mit Entwicklertools verwenden, die auf allen Windows-Versionen geschlossen sind. Unter XP ist dies der Fall, unter Windows 7 jedoch nicht. Wenn Sie die Unterstützung für WinXP im Allgemeinen eingestellt haben, können Sie console.log direkt verwenden.
quelle
Wie wäre es mit...
quelle