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?

2voto

gdbdable Punkte 4288

Stub der Konsole in TypeScript:

if (!window.console) {
console = {
    assert: () => undefined,
    clear: () => undefined,
    count: () => undefined,
    debug: () => undefined,
    dir: () => undefined,
    dirxml: () => undefined,
    error: () => undefined,
    group: () => undefined,
    groupCollapsed: () => undefined,
    groupEnd: () => undefined,
    info: () => undefined,
    log: () => undefined,
    msIsIndependentlyComposed: (e: Element) => false,
    profile: () => undefined,
    profileEnd: () => undefined,
    select: () => undefined,
    time: () => undefined,
    timeEnd: () => undefined,
    trace: () => undefined,
    warn: () => undefined,
    }
};

2voto

Yogi Punkte 4178

Bemerkt, dass OP ist mit Firebug mit IE, so nehmen Sie es ist Firebug Lite . Dies ist eine seltsame Situation, da die Konsole im IE definiert wird, wenn das Debugger-Fenster geöffnet wird, aber was passiert, wenn Firebug bereits läuft? Nicht sicher, aber vielleicht die "firebugx.js"-Methode könnte ein guter Weg, um in dieser Situation zu testen sein:

Quelle:

https://code.google.com/p/fbug/source/browse/branches/firebug1.2/lite/firebugx.js?r=187

    if (!window.console || !console.firebug) {
        var names = [
            "log", "debug", "info", "warn", "error", "assert",
            "dir","dirxml","group","groupEnd","time","timeEnd",
            "count","trace","profile","profileEnd"
        ];
        window.console = {};
        for (var i = 0; i < names.length; ++i)
            window.console[names[i]] = function() {}
    }

(aktualisierte Links 12/2014)

1voto

Christophe Roussy Punkte 15183

Für IE8 oder Konsolenunterstützung, die sich auf console.log beschränkt (kein debug, trace, ...), können Sie Folgendes tun:

  • Wenn console OR console.log undefiniert ist: Dummy-Funktionen erstellen für Konsolenfunktionen (trace, debug, log, ...)

    window.console = { debug : function() {}, ...};

  • Ansonsten, wenn console.log definiert ist (IE8) UND console.debug (jede andere) nicht definiert ist: alle Logging-Funktionen auf console.log umleiten, dies erlaubt es, diese Logs zu behalten !

    window.console = { debug : window.console.log, ...};

Ich bin mir nicht sicher, ob die verschiedenen IE-Versionen die Behauptung unterstützen, aber alle Vorschläge sind willkommen. Auch diese Antwort hier gepostet: Wie kann ich die Konsolenprotokollierung im Internet Explorer verwenden?

1voto

Praveen Punkte 52780

Für die Fehlersuche in IE, schauen Sie sich dies an log4javascript

1voto

David Glass Punkte 2808
console = console || { 
    debug: function(){}, 
    log: function(){}
    ...
}

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