'console' ist undefiniert Fehler für Internet Explorer
Ich bin mit Firebug und habe einige Aussagen wie:
console.log("...");
meiner Seite. Im IE8 (vermutlich frühere Versionen) bekomme ich script Fehler sagen: 'console' ist undefiniert. Ich habe versucht, dies an der Spitze meiner Seite:
<script type="text/javascript">
if (!console) console = {log: function() {}};
</script>
trotzdem bekomme ich den Fehler. Jeder Weg, um loszuwerden, die Fehler?
Verwenden
console.log() funktioniert nur, wenn der IE-dev-tool wird geöffnet (ja IE ist beschissen). siehe stackoverflow.com/questions/7742781/...
Beste Antwort auf diese Frage ist stackoverflow.com/a/16916941/2274855
siehe github.com/h5bp/html5-boilerplate/blob/master/js/plugins.js
link ist kaputt, dann verwenden Sie dieses anstatt: github.com/h5bp/html5-boilerplate/blob/master/src/js/plugins.js
typeof
in Ihrem wenn, wird es vermeiden, undefined Fehler: if(typeof console === "undefined") { var console = { log: function (logMsg) { } }; }
console.log() funktioniert nur, wenn der IE-dev-tool wird geöffnet (ja IE ist beschissen). siehe stackoverflow.com/questions/7742781/...
Beste Antwort auf diese Frage ist stackoverflow.com/a/16916941/2274855
siehe github.com/h5bp/html5-boilerplate/blob/master/js/plugins.js
link ist kaputt, dann verwenden Sie dieses anstatt: github.com/h5bp/html5-boilerplate/blob/master/src/js/plugins.js
InformationsquelleAutor user246114 | 2010-07-24
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen
Eine nicht definierte variable nicht direkt in Anspruch genommen werden. Jedoch, alle globalen Variablen werden in Attribute mit dem gleichen Namen von den globalen Kontext (
window
im Fall der Browser), und Zugriff auf ein nicht definiertes Attribut ist in Ordnung.Oder verwenden Sie
if (typeof console === 'undefined') console = ...
wenn Sie möchten, um zu vermeiden, die Magische variablewindow
finden Sie @Tim das Down-Antwort.<script type="text/javascript"> if (!window.console) console = {log: function() {}}; </script>
an der Spitze Ihrer Seite! Dank Kenny.Was
var console = console || { log: function() {} };
Zu verwenden, die Kurzschrift, die Sie brauchen, um
window
:var console = window.console || { log: function() {} };
Verdammt... Sie erstellen eine schöne website, entwickeln Sie es für Ihre Lieblings-browser. Am Ende verbringen Sie 4-5 STUNDEN, so dass es kompatibel mit allen anderen MODERNEN Browsern, und dann verbringen Sie 4-5 TAGE, so dass es kompatibel mit dem IE.
Das problem mit dieser Antwort ist, wenn Sie mit einem anderen Namen wie debug, warn, rechnen Sie mit browser, fehlende console wirft eine Ausnahme sehen, der bessere Weg, das zu tun, stackoverflow.com/a/16916941/2274855
InformationsquelleAutor kennytm
Fügen Sie den folgenden an der Spitze der JavaScript (vor der Verwendung der Konsole):
Die Funktion closure-wrapper um den Umfang der Variablen keine Variablen definieren. Diese schützt gegen beide undefined
console
undefinedconsole.debug
(und andere fehlende Methoden).EDIT: bemerkte ich, dass HTML5 Boilerplate benutzt ähnlichen code in seine js/plugins.js Datei, wenn Sie auf der Suche nach einer Lösung (wahrscheinlich) gehalten werden up-to-date.
Wegen Datum. Absolut einverstanden mit den richtigen Lösungen arbeiten. Ich denke, dieses Thema müssen moderiert werden. Sorry für schlechtes Englisch.
Ganz abgeschlossen ist, außer, dass er nicht versuchen wird die Umleitung Protokollierung der log-Funktion (falls vorhanden) so, dass alle Protokolle sind verloren
Wann würde diese genau auftreten? Dieser code sollte nur definieren Elemente, die noch nicht definiert sind.
Ich denke, so oder so - (function(){...}()) oder (Funktion(){...})() - funktioniert tatsächlich
InformationsquelleAutor Peter Tseng
Andere alternative ist die
typeof
Betreiber:Doch eine andere alternative ist die Verwendung einer logging-Bibliothek, wie meine eigenen log4javascript.
Meinst du mit
var
? Das würde nur verwirren die Dinge hier. Oder meinst du die Zuweisung anwindow.console
eher alsconsole
?Mit
var
. Warum würde es verwirren die Dinge hier?Was für eine verwirrende Diskussion. +1 orginal Antwort. Wenn ich könnte +2 würde ich für die Bereitstellung einen link zu Ihrer eigenen log4javascript. Dank OP!
Nein.
typeof
garantiert einen string zurückgeben und"undefined"
ist ein string. Wenn die beiden Operanden den gleichen Typ,==
und===
angegeben sind, ausführen genau die gleichen Schritte. Mittypeof x == "undefined"
ist eine solide Möglichkeit zu testen, obx
ist undefiniert, in jedem Umfang und jeder ECMAScript-3-konforme Umgebung.InformationsquelleAutor Tim Down
Für eine stabilere Lösung ist, verwenden Sie dieses Stück code (aus der twitter-source-code):
InformationsquelleAutor Vinícius Moraes
In meinen Skripten, die ich entweder benutzen Sie die Kurzform:
oder, wenn es nicht möglich oder durchführbar zu Bearbeiten jede Konsole.log-line, ich erstellen Sie eine gefälschte Konsole:
if(!console) {console = {} ; console.log = function(){};}
Oder nicht nur
!window.console && (window.console = { log: function () { } });
InformationsquelleAutor iblamefish
Können Sie
console.log()
wenn SieDeveloper Tools
im IE8 geöffnet und Sie können auch verwenden dieConsole
Textfeld auf der Registerkarte "Skript".InformationsquelleAutor
this
bezieht sich aufwindow
.InformationsquelleAutor insign
Im IE9, wenn die Konsole nicht geöffnet wird, diesen code:
zeigen "Objekt", aber dieser code
werfen TypeError-Ausnahme, aber nicht zurück undefinierten Wert;
Also garantiert-version der code wird ungefähr so Aussehen:
InformationsquelleAutor bonbonez
Bin ich nur mit der Konsole.log-in meinem code. Also ich habe eine sehr kurze 2 liner
InformationsquelleAutor Ruben Decrop
Basiert auf zwei vorherigen Antworten durch
und die Dokumentationen für
Hier ist eine best-effort-Implementierung für die Ausgabe, das heißt, wenn es eine Konsole.melden Sie die tatsächlich vorhanden ist, füllt er die Lücken für nicht vorhandene Methoden über die Konsole.log.
Beispielsweise für IE6/7 ersetzen Sie die Protokollierung mit alert (blöd, aber funktioniert) und dann die unten monster (ich nannte es console.js):
[Fühlen Sie sich frei, um Kommentare zu entfernen, wie Sie sehen, passen, ich ließ Sie in der Referenz, ein minimizer können Sie anzupacken]:
und console.js:
methods.hasOwnProperty(method) &&
in der for-Schleife.Ich bin mir sicher, dass Sie es brauchen.
Habe einen schnellen test in der Chrome console:
> x = { a: 1, b: 2}
-->Object {a: 1, b: 2}
undfor(var f in x) {console.log(f + " " + x[f]);} 'end'
-->a 1 b 2 "end"
. Also ein erstelltes anonymes Objekt hat keine zusätzliche Eigenschaft, undmethods
wird nur erstellt, bevor diefor
Schleife. Ist es möglich, hack oben?Ja.
var x = { a: 1, b: 2}; Object.prototype.surprise = 'I\'m in yer objectz'; for (var f in x) {console.log(f, x[f]);}
Sie nie wissen, was eine Bibliothek getan hat, um die Objekte in der Vererbungskette des Objekts, mit dem Sie arbeiten. So die Empfehlung von javascript code quality tools wie jshint und jslint nutzenhasOwnProperty
.InformationsquelleAutor TWiStErRob
Bemerkt, dass OP ist mit Firebug mit IE, so dass Firebug Lite. Dies ist ein funky situation als Konsole wird definiert im IE, wenn das debugger-Fenster wird geöffnet, aber was passiert, wenn Firebug schon läuft? Nicht sicher, aber vielleicht ist das "firebugx.js" die Methode könnte eine gute Möglichkeit zu testen, in dieser situation:
Quelle:
https://code.google.com/p/fbug/source/browse/branches/firebug1.2/lite/firebugx.js?r=187
(links aktualisiert 12/2014)
InformationsquelleAutor Roberto
Ich bin mit fauxconsole; modifizierte ich die css ein wenig, so dass es sieht schöner aus, funktioniert aber sehr gut.
InformationsquelleAutor Stijn Geukens
Zum Debuggen im IE, überprüfen Sie heraus dieses log4javascript
Vielen Dank für Ihre Kommentare.
Ich war auf der Suche für den Kommentar auf eine andere Frage hier, die sagte: 'shameless self promotion' oder ich weiß es nicht - ähnlich - jemand, der sagte, er schuf dieses scipt, war es Sie? Ich schon geschlossen, dass tab. Es ist trotzdem ein wirklich tolles tool und sehr nützlich für mein Projekt.
Ich wusste nicht, erstellt dieses Skript, ich bin eine person, wie Sie profitierte mit Werkzeug.
InformationsquelleAutor Praveen
Für den IE8 oder console-support beschränkt sich auf die Konsole.log (no debug, trace, ...) können Sie Folgendes tun:
Ob Konsole ODER Konsole.log undefined: Erstellen von dummy-Funktionen für
Konsole Funktionen (trace, debug, log, ...)
window.console = {
debug : function() {}, ...};
Else if console.Protokoll definiert ist (IE8) UND Konsole.debug (alle anderen) ist nicht definiert: umleiten alle logging-Funktionen auf die Konsole.Protokoll, das erlaubt, um diese logs !
window.console = {
debug : window.console.log, ...};
Nicht sicher über die assert-Unterstützung in diversen IE-Versionen, aber alle Vorschläge sind willkommen. Auch dies geschrieben, Antwort hier: Wie kann ich die Konsole Protokollierung in Internet Explorer?
InformationsquelleAutor Christophe Roussy
InformationsquelleAutor David Glass
Können Sie die unten zu geben, einen zusätzlichen Grad der Versicherung, dass Sie haben alle Grundlagen abgedeckt. Mit
typeof
ersten keineundefined
Fehler. Mit===
wird auch dafür sorgen, dass der name und der Typ ist tatsächlich der string "undefined". Schließlich werden Sie wollen, fügen Sie einen parameter an die Funktion Unterschrift (ich wähltelogMsg
willkürlich) um die Konsistenz zu gewährleisten, da Sie weitergeben, was Sie wollen gedruckt auf der Konsole die log-Funktion. Diese halten Sie auch intellisense genau und vermeidet irgendwelche Warnungen/Fehler im JS bewusst IDE.InformationsquelleAutor Flak DiNenno
Manchmal console funktioniert im IE8/9, aber nicht zu anderen Zeiten. Dieses erratische Verhalten hängt davon ab, ob Sie developer tools öffnen und ist beschrieben in stackoverflow-Frage Tut IE9-support-Konsole.log, und es ist eine echte Funktion?
InformationsquelleAutor Anon
Begegnet ähnliches problem mit der Konsole.log-in child-windows in IE9, erstellt durch das Fenster.die öffnen-Funktion.
Es scheint, dass in diesem Fall die Konsole ist nur definiert, im übergeordneten Fenster und undefiniert in den child-Fenster, bis Sie aktualisieren Sie. Dasselbe gilt für die Kinder von child-windows.
Ich, mit diesem Problem umzugehen, indem er log-in neben-Funktion (unten ist das fragment des Moduls)
InformationsquelleAutor Max Venediktov
Stub-Konsole im Typoskript:
InformationsquelleAutor devi
Nachdem ich ach so viele Probleme mit diesem Ding (es ist schwer zu Debuggen, Fehler da, wenn Sie öffnen Sie die Entwickler-Konsole der Fehler nicht mehr passiert!!!) Ich entschied mich für einen overkill-code zu haben nie diese Mühe machen, immer wieder:
Ich persönlich immer nur Konsole.log und Konsole.Fehler, aber dieser code kümmert sich um alle anderen Funktionen, wie gezeigt, in der Mozzila Developer Network: https://developer.mozilla.org/en-US/docs/Web/API/console.
Setzen Sie einfach diesen code auf der Oberseite Ihrer Seite und Sie sind fertig für immer mit diesem.
InformationsquelleAutor Hoffmann
Können Sie die Konsole.log(...) direkt in Firefox aber nicht in IEs. In den IEs verwenden Sie die Fenster.console.
InformationsquelleAutor Mohit Kumar