В последнее время я работаю над некоторым виджетом jQuery для работы / веселья ( github ), и все еще есть что-то, что меня беспокоит.
Когда я использую виджет в своем приложении, я хочу иметь возможность передать опцию отладки, которая будет включать или отключать ведение журнала (используя console.log) только в этом плагине.
лучшее решение на данный момент:
от:
(function( $, undefined ) {
})(jQuery);
до:
(function( $, console, undefined ) {
if (!o.debug) console = { log: function(){} };
})(jQuery, console);
Осталась одна проблема
Если я загружаю два виджетакак:
$myDiv.myWidget({debug: true});
$myDiv2.myWidget({debug: false});
У меня не будет более поздней отладки с 1-го экземпляра.Есть идеи?
[оригинал] Пока я использовал фрагмент кода, который нашел в интернете:
var logger = function() {
var oldConsoleLog = null;
var pub = {};
pub.enableLogger = function enableLogger() {
if(oldConsoleLog == null) return;
window['console']['log'] = oldConsoleLog;
};
pub.disableLogger = function disableLogger() {
oldConsoleLog = console.log;
window['console']['log'] = function() {};
};
return pub;
}();
Затем на _create()
я могу сделатьЧто-то вроде:
if (!o.debug) {
logger.disableLogger();
}
Выглядело довольно хорошо, однако, это не специфично для плагина, так как это отключит console.log для всего моего приложения.
Одним важным моментом является то, что я хочу бытьв состоянии сохранить функцию ведения журнала console.log (без переноса console.log, поскольку, насколько я знаю / попытался, он заменит информацию о строке регистрации на бесполезную завернутую строку вызова).
Спасибо!