if(window.console)
console.lod("myLog");
или переопределяют
if(window.console)
window.console.log = function(){};
мне это надоело и я решил написать что-то что позволит нормально отлаживать без заглушек. на ваше рассмотрение скрипт результат работы сегодняшнего дня
myConsole = function(){
var args = Array.prototype.slice.call(arguments);
if (args.length>2){
(opera?opera.postError:alert)(args.shift() +':\n'+ args.shift().replace(/(%[ds])/g, function(){
return args.shift();
})
)
}else{
// автор функции dump - Дмитрий Котеров
// http://dklab.ru/chicken/nablas/38.html
(opera?opera.postError:alert)(args.shift() +':\n'+ (function dump(d,l) {
if (l == null) l = 1;
var s = '';
if (typeof(d) == "object") {
s += typeof(d) + " {\n";
for (var k in d) {
for (var i=0; i<l; i++) s += " ";
s += k+": " + dump(d[k],l+1);
}
for (var i=0; i<l-1; i++) s += " ";
s += "}\n"
} else {
s += "" + d + "\n";
}
return s;
})(args.shift()))
}
}
if (window.loadFirebugConsole) {
window.loadFirebugConsole();
} else {
if (!window.console) {
window.console = {};
window.console.info = function(){myConsole.apply(null,['info'].concat(Array.prototype.slice.call(arguments)))};
}
}
Скрипт поддерживает форматный вывод типа printf и простой вывод объектов
console.info("string: %d %s %d", 10, "text", 10);
console.info({});
единственное что я бы не советовал делать чтото вроде
console.info(window);
console.info(document);
это скорее всего положит браузер или выдаст предупреждение о том что очень много рекурсивных вызовов
Если не хватает INFO можно дописать остальные уровни дебага просто добавив несколько строк
window.console.warn = function(){myConsole.apply(null,['warn'].concat(Array.prototype.slice.call(arguments)))};