Проверьте, присутствует ли консоль
Я пишу плагин. Для этого я запишу несколько вещей, скажем, предупреждения, мелочи и т.д. Для их регистрации я буду использовать консоль, но может быть ошибка, если какой-либо браузер не поддерживает консоль. Чтобы справиться с этой ошибкой, я думаю об использовании этого кода:
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() {};
Будет ли это работать правильно или есть лучший вариант?
Ответы
Ответ 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");
Не работает ли это?
Ответ 4
Как использовать библиотеку для ведения журнала?
UPDATE:. Вы можете использовать ниже script, чтобы избежать ошибок console
в браузерах, которым не хватает консоли.
https://github.com/h5bp/html5-boilerplate/blob/master/src/js/plugins.js
Ответ 5
Как насчет сокращения @alexn немного ответа
window.console = window.console || { debug: function(){}, log: function() { } };