383 Stimmen

console' ist ein undefinierter Fehler für Internet Explorer

Ich verwende Firebug und habe einige Anweisungen wie:

console.log("...");

auf meiner Seite. Im IE8 (wahrscheinlich auch in früheren Versionen) erhalte ich Skriptfehler, die besagen, dass "console" undefiniert ist. Ich habe versucht, dies an den Anfang meiner Seite zu setzen:

<script type="text/javascript">
    if (!console) console = {log: function() {}};
</script>

Ich erhalte immer noch die Fehler. Gibt es eine Möglichkeit, die Fehler zu beseitigen?

1voto

Stijn Geukens Punkte 15139

Ich benutze fauxconsole Ich habe das CSS ein wenig geändert, so dass es schöner aussieht, aber sehr gut funktioniert.

0voto

Flak DiNenno Punkte 2021

Mit den nachstehenden Angaben können Sie sich zusätzlich absichern, dass Sie alles im Griff haben. Verwendung von typeof zuerst wird jede undefined Fehler. Verwendung von === stellt auch sicher, dass der Name des Typs tatsächlich die Zeichenkette "undefined" ist. Schließlich fügen Sie der Funktionssignatur einen Parameter hinzu (ich wählte logMsg willkürlich), um Konsistenz zu gewährleisten, da Sie der Log-Funktion alles übergeben, was Sie auf der Konsole ausgeben wollen. Dies auch halten Sie Intellisense genau und vermeidet alle Warnungen/Fehler in Ihrem JS bewusst IDE.

if(!window.console || typeof console === "undefined") {
  var console = { log: function (logMsg) { } };
}

0voto

Anon Punkte 5154

Manchmal funktioniert die Konsole im IE8/9, zu anderen Zeiten jedoch nicht. Dieses unregelmäßige Verhalten hängt davon ab, ob Sie die Entwicklertools geöffnet haben und wird in der Stackoverflow-Frage beschrieben Unterstützt IE9 console.log, und ist es eine echte Funktion?

0voto

Max Venediktov Punkte 382

Ein ähnliches Problem trat beim Ausführen von console.log in untergeordneten Fenstern im IE9 auf, das durch die Funktion window.open verursacht wurde.

Es scheint, dass in diesem Fall die Konsole nur im übergeordneten Fenster definiert ist und in den untergeordneten Fenstern undefiniert ist, bis Sie sie aktualisieren. Dasselbe gilt für untergeordnete Fenster.

Ich befasse mich mit diesem Problem, indem ich das Protokoll in die nächste Funktion einfüge (unten ist ein Fragment des Moduls)

getConsole: function()
    {
        if (typeof console !== 'undefined') return console;

        var searchDepthMax = 5,
            searchDepth = 0,
            context = window.opener;

        while (!!context && searchDepth < searchDepthMax)
        {
            if (typeof context.console !== 'undefined') return context.console;

            context = context.opener;
            searchDepth++;
        }

        return null;
    },
    log: function(message){
        var _console = this.getConsole();
        if (!!_console) _console.log(message);
    }

-2voto

Hoffmann Punkte 13739

Nachdem ich ach so viele Probleme mit diesem Ding hatte (es ist schwer, den Fehler zu beheben, denn wenn man die Entwicklerkonsole öffnet, tritt der Fehler nicht mehr auf!) Ich beschloss, einen Overkill-Code zu machen, um mich nie wieder damit herumschlagen zu müssen:

if (typeof window.console === "undefined")
    window.console = {};

if (typeof window.console.debug === "undefined")
    window.console.debug= function() {};

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

if (typeof window.console.error === "undefined")
    window.console.error= function() {alert("error");};

if (typeof window.console.time === "undefined")
    window.console.time= function() {};

if (typeof window.console.trace === "undefined")
    window.console.trace= function() {};

if (typeof window.console.info === "undefined")
    window.console.info= function() {};

if (typeof window.console.timeEnd === "undefined")
    window.console.timeEnd= function() {};

if (typeof window.console.group === "undefined")
    window.console.group= function() {};

if (typeof window.console.groupEnd === "undefined")
    window.console.groupEnd= function() {};

if (typeof window.console.groupCollapsed === "undefined")
    window.console.groupCollapsed= function() {};

if (typeof window.console.dir === "undefined")
    window.console.dir= function() {};

if (typeof window.console.warn === "undefined")
    window.console.warn= function() {};

Ich persönlich verwende immer nur console.log und console.error, aber dieser Code behandelt alle anderen Funktionen, wie im Mozzila Developer Network gezeigt: https://developer.mozilla.org/en-US/docs/Web/API/console . Fügen Sie diesen Code einfach oben auf Ihrer Seite ein und Sie sind für immer damit fertig.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X