Подтвердить что ты не робот

Проверьте, присутствует ли консоль

Я пишу плагин. Для этого я запишу несколько вещей, скажем, предупреждения, мелочи и т.д. Для их регистрации я буду использовать консоль, но может быть ошибка, если какой-либо браузер не поддерживает консоль. Чтобы справиться с этой ошибкой, я думаю об использовании этого кода:

    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() {};

Будет ли это работать правильно или есть лучший вариант?

4b9b3361

Ответ 1

Вы приближаетесь к нему правильно. Вы могли бы немного сократить его:

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

Это позволяет использовать console.log/console.debug etc без предварительной проверки того, задан ли объект консоли. Я рекомендую всегда включать этот фрагмент, если вы регистрируетесь, поскольку его легко забыть удалить, и он сломает ваш сайт, если консоль отсутствует.

Ответ 2

Этот подход упрощает добавление/изменение/удаление методов в будущем и является более элегантным и менее избыточным, чем большинство предлагаемых:

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;
    }
}

Ответ 3

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

Не работает ли это?

Ответ 5

Как насчет сокращения @alexn немного ответа

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