480 Stimmen

Wie drucke ich Debug-Meldungen in der JavaScript-Konsole von Google Chrome?

Wie drucke ich Debug-Meldungen in der JavaScript-Konsole von Google Chrome?

Bitte beachten Sie, dass die JavaScript-Konsole nicht dasselbe ist wie der JavaScript-Debugger; sie haben unterschiedliche Syntaxen AFAIK, so dass die drucken Befehl im JavaScript Debugger funktioniert hier nicht. In der JavaScript-Konsole, print() wird der Parameter an den Drucker gesendet.

606voto

Sergey Ilinsky Punkte 30525

Ausführen des folgenden Codes in der Adressleiste des Browsers:

javascript: console.log(2);

gibt erfolgreich eine Meldung an die "JavaScript-Konsole" in Google Chrome aus.

13 Stimmen

Ich habe es gerade gemerkt, console.log() ist großartig für das Debugging von js ... Ich vergesse oft, es in der Praxis zu verwenden.

0 Stimmen

Wie lang kann einer dieser "Outputs" sein? Upvote übrigens, das war wirklich hilfreich

3 Stimmen

@dbrin das ist gut für die Entwicklung, aber jede console.log() Code sollte vor der Bereitstellung aus dem Produktionscode entfernt werden.

167voto

Delan Azabani Punkte 76072

In Weiterentwicklung von Andru's Idee können Sie ein Skript schreiben, das Konsolenfunktionen erstellt, wenn diese nicht vorhanden sind:

if (!window.console) console = {};
console.log = console.log || function(){};
console.warn = console.warn || function(){};
console.error = console.error || function(){};
console.info = console.info || function(){};

Verwenden Sie dann eine der folgenden Möglichkeiten:

console.log(...);
console.error(...);
console.info(...);
console.warn(...);

Diese Funktionen protokollieren verschiedene Arten von Elementen (die auf der Grundlage von log, info, error oder warn gefiltert werden können) und verursachen keine Fehler, wenn die Konsole nicht verfügbar ist. Diese Funktionen funktionieren in Firebug- und Chrome-Konsolen.

0 Stimmen

Vielen Dank dafür. Wäre der Code nicht straffer, wenn Sie das "if" einmal ausführen würden, wie if (!window.console) { und dann alles in Klammern setzen? Im Moment werten Sie dieselben Dinge viermal aus.

0 Stimmen

Nein, denn nur weil Sie window.console haben, heißt das noch lange nicht, dass Sie auch window.console.log oder .warn &c haben.

18 Stimmen

Seien Sie nur vorsichtig, denn wenn dieses Skript mit der Seite geladen wird und das Konsolenfenster nicht geöffnet ist, wird eine 'Dummy'-Konsole erstellt, die verhindern kann, dass die echte Konsole funktioniert, wenn Sie die Konsole öffnen nach die Seite wird geladen. (Zumindest ist dies bei älteren Versionen von Firefox/Firebug und Chrome der Fall)

49voto

gavenkoa Punkte 40749

Fügen Sie einfach eine coole Funktion hinzu, die viele Entwickler vermissen:

console.log("this is %o, event is %o, host is %s", this, e, location.host);

Dies ist die magische %o abladen anklickbar und tief durchsuchbar Inhalt eines JavaScript-Objekts. %s wurde nur zur Erinnerung gezeigt.

Auch das ist cool:

console.log("%s", new Error().stack);

Das ergibt einen Java-ähnlichen Stack-Trace bis zum Punkt der new Error() Aufrufen (einschließlich Pfad zur Datei und Zeilennummer !).

Beide %o y new Error().stack sind in Chrome und Firefox verfügbar!

Auch für Stack Traces in Firefox verwenden:

console.trace();

Como https://developer.mozilla.org/en-US/docs/Web/API/console sagt.

Viel Spaß beim Hacken!

UPDATE : Einige Bibliotheken werden von schlechten Menschen geschrieben, die die console Objekt für ihre eigenen Zwecke zu nutzen. So stellen Sie den ursprünglichen Browser wieder her console nach dem Laden der Bibliothek, verwenden:

delete console.log;
delete console.warn;
....

Siehe Stack Overflow Frage Wiederherstellung console.log() .

3 Stimmen

Eine andere habe ich gerade entdeckt: console.dir developer.mozilla.org/de-US/docs/Web/API/console.dir

17voto

Andru Punkte 6799

Nur eine kurze Warnung - wenn Sie im Internet Explorer testen wollen, ohne alle console.log()'s zu entfernen, müssen Sie Folgendes verwenden Firebug Lite oder Sie erhalten einige nicht besonders freundliche Fehlermeldungen.

(Oder erstellen Sie Ihre eigene console.log(), die einfach false zurückgibt).

2 Stimmen

Ich vermeide browserübergreifende Fehler wie diese: if (console) console.log()

0 Stimmen

Wenn Sie die Entwicklertools im IE (F12) öffnen, wird die console Objekt wird erstellt und bleibt bestehen, bis Sie die Browserinstanz schließen.

17voto

Vegar Punkte 171

Hier ist ein kurzes Skript, das überprüft, ob die Konsole verfügbar ist. Ist dies nicht der Fall, versucht es, die Firebug und wenn Firebug nicht verfügbar ist, wird Firebug Lite geladen. Jetzt können Sie verwenden console.log in jedem Browser. Viel Spaß!

if (!window['console']) {

    // Enable console
    if (window['loadFirebugConsole']) {
        window.loadFirebugConsole();
    }
    else {
        // No console, use Firebug Lite
        var firebugLite = function(F, i, r, e, b, u, g, L, I, T, E) {
            if (F.getElementById(b))
                return;
            E = F[i+'NS']&&F.documentElement.namespaceURI;
            E = E ? F[i + 'NS'](E, 'script') : F[i]('script');
            E[r]('id', b);
            E[r]('src', I + g + T);
            E[r](b, u);
            (F[e]('head')[0] || F[e]('body')[0]).appendChild(E);
            E = new Image;
            E[r]('src', I + L);
        };
        firebugLite(
            document, 'createElement', 'setAttribute', 'getElementsByTagName',
            'FirebugLite', '4', 'firebug-lite.js',
            'releases/lite/latest/skin/xp/sprite.png',
            'https://getfirebug.com/', '#startOpened');
    }
}
else {
    // Console is already available, no action needed.
}

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