Prüfen Sie, ob die Konsole vorhanden ist

Lesezeit: 2 Minuten

Benutzer-Avatar
Rocky Singh

Ich schreibe ein Plugin. Dafür werde ich ein paar Dinge protokollieren, sagen wir Warnungen, Necc-Dinge usw. Um sie zu protokollieren, werde ich die Konsole verwenden, aber es kann einen Fehler geben, wenn ein Browser die Konsole nicht unterstützt. Um diesen Fehler zu behandeln, denke ich an die Verwendung dieses Codes:

    if (typeof console == 'undefined') console = {};
if (typeof console.log == 'undefined') console.log = function() {};
if (typeof console.debug == 'undefined') console.debug = function() {};
if (typeof console.info == 'undefined') console.info = function() {};
if (typeof console.warn == 'undefined') console.warn = function() {};
if (typeof console.error == 'undefined') console.error = function() {};

Wird das richtig funktionieren oder gibt es eine bessere Option?

Benutzer-Avatar
alexn

Du gehst es richtig an. Man könnte es aber etwas kürzen:

if(typeof console === "undefined") {
    console = {
        log: function() { },
        debug: function() { },
        ...
    };
}

Dies ermöglicht Ihnen die Verwendung console.log/console.debug etc ohne zuerst zu prüfen, ob ein Konsolenobjekt definiert ist. Ich empfehle, dieses Snippet immer einzufügen, wenn Sie sich anmelden, da es leicht vergessen wird, es zu entfernen, und es Ihre Website beschädigt, wenn keine Konsole vorhanden ist.

Benutzer-Avatar
Lior

Dieser Ansatz erleichtert das Hinzufügen/Ändern/Entfernen von Methoden in der Zukunft und ist eleganter und weniger redundant als die meisten angebotenen:

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

console && console.log("whatever");

Funktioniert das nicht?

  • Ich glaube, Sie können es tun console.log("whatever") || true; oder etwas ähnliches. Ich habe es vor ein paar Monaten gesehen und kann mich nicht genau erinnern, wie der Entwickler es gemacht hat, aber ich denke, das ist richtig.

    – Endophage

    17. Mai 2011 um 20:18 Uhr

  • @Endophage Wenn die Konsole nicht unterstützt wird, erhalten Sie eine “Kann Methode ‘log’ von undefiniert nicht aufrufen”. Eine korrekte Online-Prüfung wäre: console && console.log && console.log("whatever")

    – Lior

    31. Oktober 2012 um 14:10 Uhr


Benutzer-Avatar
Aravidan R

Wie wäre es mit einer Bibliothek für die Protokollierung?

AKTUALISIEREN: Sie können das folgende Skript verwenden, um dies zu vermeiden console Fehler in Browsern ohne Konsole.

https://github.com/h5bp/html5-boilerplate/blob/master/src/js/plugins.js

Wie wäre es, die Antwort von @alexn etwas zu kürzen?

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

1151090cookie-checkPrüfen Sie, ob die Konsole vorhanden ist

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy