Wie kann ich die Konsolenprotokollierung in Internet Explorer verwenden?


119

Gibt es einen Konsolenlogger für IE? Ich versuche, eine Reihe von Tests / Zusicherungen in der Konsole zu protokollieren, kann dies jedoch im IE nicht tun.


8
Achtung! console.log()funktioniert nur, wenn das dev-Tool des IE geöffnet ist (ja, der IE ist beschissen). siehe stackoverflow.com/questions/7742781/…
Adrien Be

1
Verwenden Sie Cross-Browser-Wrapper: github.com/MichaelZelensky/log.js
Michael Zelensky

Antworten:


146

Sie können auf die IE8-Skriptkonsole zugreifen, indem Sie die "Developer Tools" (F12) starten. Klicken Sie auf die Registerkarte "Skript" und dann rechts auf "Konsole".

In Ihrem JavaScript-Code können Sie eine der folgenden Aktionen ausführen:

<script type="text/javascript">
    console.log('some msg');
    console.info('information');
    console.warn('some warning');
    console.error('some error');
    console.assert(false, 'YOU FAIL');
</script>

Sie können die Konsole auch löschen, indem Sie anrufen console.clear().

HINWEIS: Anscheinend müssen Sie zuerst die Entwicklertools starten und dann Ihre Seite aktualisieren, damit dies funktioniert.


Dies ist nur für IE8 +, aber es ist eine verdammt gute Konsole. Es handelt sich im Grunde genommen um eine Nachbildung von Firebug, bei der einige Funktionen fehlen und einige andere hinzugefügt wurden. Suchen Sie in MSDN danach.
Ken

2
Ah, obwohl es Firebug nicht erfüllt, hat es immer noch genug von dem, was ich brauche. Vielen Dank!
Ground5Hark

1
Link zu MSDN
Casebash

73
Beachten Sie, dass im IE, anders als in Firefox, wenn die Entwicklertools nicht aktiv sind, window.console undefiniert ist und der Aufruf unterbrochen wird console.log(). Schützen Sie Ihre Anrufe immer mitwindow.console && console.log('stuff');
Guss

1
Falls jemand es immer noch nicht finden kann, tun Sie nicht das, was ich getan habe, und versuchen Sie, Ihr Skript in den oberen Teil des Fensters einzugeben: Der Eingabebereich ist tatsächlich ein Textbereich / eine Leiste am unteren Rand des Developer Tools Console-Fensters .
Starmandeluxe

24

Seit Version 8 verfügt Internet Explorer wie andere Browser über eine eigene Konsole. Wenn die Konsole jedoch nicht aktiviert ist, ist das consoleObjekt nicht vorhanden und ein Aufruf von löst console.logeinen Fehler aus.

Eine andere Option ist die Verwendung von log4javascript (vollständige Offenlegung: von mir geschrieben), das über eine eigene Protokollierungskonsole verfügt, die in allen gängigen Browsern funktioniert, einschließlich IE> = 5, sowie einen Wrapper für die eigene Konsole des Browsers, der das Problem einer undefinierten vermeidet console.


Hah .. Ein paar Monate habe ich etwas Ähnliches geschrieben. Gute Arbeit!
11.

@ Tim Down gibt es eine Problemumgehung
Vinod Srivastav

14

Sehr wichtig bei Verwendung von console.log () in der Produktion:

Wenn Sie am Ende console.log()Befehle für die Produktion freigeben , müssen Sie eine Korrektur für den IE vornehmen, da diese consolenur im F12Debugging-Modus definiert wird.

if (typeof console == "undefined") {
    this.console = { log: function (msg) { alert(msg); } };
}

[offensichtlich entfernen Sie die Warnung (msg); Aussage, sobald Sie überprüft haben, dass es funktioniert]

Siehe auch 'Konsole' ist ein undefinierter Fehler für Internet Explorer für andere Lösungen und weitere Details



5

Einfacher IE7 und niedriger Shim, der die Zeilennummerierung für andere Browser beibehält:

/* console shim*/
(function () {
    var f = function () {};
    if (!window.console) {
        window.console = {
            log:f, info:f, warn:f, debug:f, error:f
        };
    }
}());

3

John Resig (Erfinder von jQuery) hat in seinem Buch "Secrets of Javascript Ninja" einen wirklich einfachen Code, der browserübergreifende Probleme mit console.log behandelt. Er erklärt, dass er eine Protokollnachricht haben möchte, die mit allen Browsern funktioniert, und wie er sie codiert hat:

function log() {
  try {
    console.log.apply(console, arguments);
  } catch(e) {
  try {
    opera.postError.apply(opera, arguments);
  }
  catch(e) {
    alert(Array.prototype.join.call( arguments, " "));
  }
}

Es ist John Resig; Sie schrieben "Resign", LOL
rvighne

1
Es ist ein }in diesem Snippet fehlt. :)
Nighto

2

Für die auf console.log beschränkte IE8- oder Konsolenunterstützung (kein Debug, Trace, ...) können Sie Folgendes tun:

  • Wenn console ODER console.log undefiniert ist: Erstellen Sie Dummy-Funktionen für Konsolenfunktionen (Trace, Debug, Log, ...)

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

  • Andernfalls, wenn console.log definiert ist (IE8) UND console.debug (irgendein anderes) nicht definiert ist: Leiten Sie alle Protokollierungsfunktionen zu console.log um, damit diese Protokolle beibehalten werden können!

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

Ich bin mir nicht sicher, ob Assert in verschiedenen IE-Versionen unterstützt wird, aber Vorschläge sind willkommen.



0

Für ältere IE-Versionen (vor IE8) ist es nicht einfach, das Konsolenprotokoll in der IE Developer Toolbar anzuzeigen, nachdem ich stundenlang recherchiert und viele verschiedene Lösungen ausprobiert habe. Schließlich ist die folgende Symbolleiste ein großartiges Tool für mich:

Der Hauptvorteil davon ist die Bereitstellung einer Konsole für IE6 oder IE7, sodass Sie den Fehler sehen können (im Konsolenprotokoll).

  • Hinweis:
  • Es ist frei
  • Screenshot der Symbolleiste

Geben Sie hier die Bildbeschreibung ein


0

Ich habe immer so etwas gemacht:

var log = (function () {
  try {
    return console.log;
  }
  catch (e) {
    return function () {};
  }
}());

und von diesem Punkt an verwenden Sie einfach immer log (...), seien Sie nicht zu ausgefallen mit der Konsole. [warn | error | und so weiter], halten Sie es einfach. Normalerweise bevorzuge ich eine einfache Lösung gegenüber ausgefallenen externen Bibliotheken, die sich normalerweise auszahlt.

einfache Möglichkeit, Probleme mit dem IE zu vermeiden (mit nicht vorhandenem console.log)

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.