Comments 29
UFO just landed and posted this here
Как раз недавно в твиттере наткнулся на прикольный код:
+24
Кто чего поддерживает лучше сделать таблицей.
+3
> Порядок использования аргументов можно изменить вручную, использовав символ $ и приписав
Символ %.
Символ %.
0
Хороший перевод…
Только если уж использовать для отладки FireBug то надо пользоваться не только алертами)
getfirebug.com/wiki/index.php/Command_Line_API
Только если уж использовать для отладки FireBug то надо пользоваться не только алертами)
getfirebug.com/wiki/index.php/Command_Line_API
+1
UFO just landed and posted this here
Простите, немного не в тему, а киньте ктонить нормальной реализацией sprintf в Javascript.
0
Еще думаю стоит заметить что console.log в некоторых броузерах (Chrome, FireFox точно) без ошибки отрабатывают при закрытой консоли, а тот же IE выдает ошибку.
Просто в связи с этим возникали ошибки: забывали убрать console.log, в Chrome/FF работало все нормально, а в IE ошибка.
Просто в связи с этим возникали ошибки: забывали убрать console.log, в Chrome/FF работало все нормально, а в IE ошибка.
0
Видимо это связанно с устройством встроенной консоли. В стабильной ветке Firefox'а все еще есть ошибка, а в бетках 4-ой ее уже нет, но есть встроенная консоль. Видимо в ie дела обстоят как-то иначе, но как ведет себя ie9 я не знаю… Может кто просветит?
0
+500 насчет «не работает в стабильной версии». Причем я помню, что относительно недавно в 3-их ФФ с закрытой консолью ещё все срабатывало безошибочно, но не сейчас. Не далее как в начале года насткнулся на именно такой «глюк» — именно из-за неубранного console.log в приложении, открытом на клиентском компьютере не срабатывал полностью скрипт.
0
Именно потому я пользуюсь такой ф-цией:
function log () {
return 'console' in window ? console.log.apply(console, arguments) : null;
}
+1
А я ставлю затычку из методов:
if (!window.console)
{
window.console = {
log : function(){},
dir : function(){}
....
}
}
+4
Кстати, о затычках.
Из готовых решений есть ещё такой кроссбраузерный вариант: Complete cross-browser console.log() с подробным описанием всех решаемых проблем и тестовая страница, где можно сразу увидеть/проверить результат работы во всех браузерах.
При подключении consolelog.js обратите внимание на то, что этот скрипт не переопределяет уже имеющуюся функцию log() (это может были либо ваша, либо из другой подобной затычки).
Из готовых решений есть ещё такой кроссбраузерный вариант: Complete cross-browser console.log() с подробным описанием всех решаемых проблем и тестовая страница, где можно сразу увидеть/проверить результат работы во всех браузерах.
При подключении consolelog.js обратите внимание на то, что этот скрипт не переопределяет уже имеющуюся функцию log() (это может были либо ваша, либо из другой подобной затычки).
0
Вопрос.
Напихали мы в свой большой JavaScript проект десятки или даже сотни отладочных и дебагерских вызовов к консоли. А какой самый удобный способ убрать их из релиза?
Сходу в голову приходит вариант сделать Replace по все JS файлам.
Или сделать собственный объект console, в котором все методы ничего не делают, и тогда console вызовы можно оставить в коде.
Может быть есть какие то более приятные варианты?
Напихали мы в свой большой JavaScript проект десятки или даже сотни отладочных и дебагерских вызовов к консоли. А какой самый удобный способ убрать их из релиза?
Сходу в голову приходит вариант сделать Replace по все JS файлам.
Или сделать собственный объект console, в котором все методы ничего не делают, и тогда console вызовы можно оставить в коде.
Может быть есть какие то более приятные варианты?
+3
Переопределение консоли — вполне неплохой вариант. Тем более, можно определить её так:
И проблему с неопределенной консолью решите и легко отключается дебаг.
new function () {
var debug = true;
var original = window.console;
window.console = {};
['log', 'dir', ...].forEach(function (method) {
console[method] = function () {
return (debug && original) ? original[method].apply(original, arguments),
}
});
};
И проблему с неопределенной консолью решите и легко отключается дебаг.
+6
Стоит добавить что в Chrome есть:
- переменная $0 всегда равна выбраному елементу на вкладке Elements (или document.body, если ничего не выбрано)
- функция copy() копирует текст в буфер обмена (например copy(document.body.innerText))
- функция inspect() переключает на вкладку Elements где автоматически выбирается нужный елемент (например inspect(document.body))
+1
Есть еще такой вариант:
(function(__global){
if (!__global.console || (__global.console && !__global.console.log)) {
__global.console = {
log: (__global.opera && __global.opera.postError)
? __global.opera.postError
: function(){ }
}
}
})(this);
0
Удобно включать режим отладки из адресной строки, например дописывая в неё #console
if(typeof allow_console == 'undefined'){
var allow_console= false;
var hash = location.hash;
if(hash.indexOf('#console')!=-1){
allow_console = true;
}
}
if(allow_console==true){
console.log('Режим отладки включен');
}
0
Вот детальнее о профилировании в Google Chrome — http://habrahabr.ru/post/149053/
0
Sign up to leave a comment.
Используем console на полную