Комментарии 35
Так есть же Firebug lite. Или я что-то упустил?
Нет, немножко разные цели.
Firebug Lite — крутая девелоперская штука, которая подключается только при разработке и в production коде — отключается.
То решение, которое в топике больше необходимо для того, чтобы можно было оставлять всякие
Firebug Lite — крутая девелоперская штука, которая подключается только при разработке и в production коде — отключается.
То решение, которое в топике больше необходимо для того, чтобы можно было оставлять всякие
console.log
даже после разработки, в production коде или во время тестирования.А что мешает оставить Firebug в production? Размер? Так подключайте его динамически по необходимости.
Firebug в сжатом виде — 130 килобайт. Он нужен исключительно для production и то не всегда.
Я хочу использовать обычный Firebug или консолью в Хроме. При этом хочу, чтобы код не сломался в ie6 из-за где-то оставленного console.log. Подключаю заглушку и продолжаю пользоваться обычным Firebug ил консолью в Хроме.
Я хочу использовать обычный Firebug или консолью в Хроме. При этом хочу, чтобы код не сломался в ie6 из-за где-то оставленного console.log. Подключаю заглушку и продолжаю пользоваться обычным Firebug ил консолью в Хроме.
Мсье знатный извращенец. У нас для таких целей при выгрузке на продакшн используется банальный прогон через JSLint.
Ну это не совсем для продакшна) Момент между development и production, когда код ещё не чистился, но его уже тестируют тестировщики без консоли.
«Извращенец» — не только я.
«Извращенец» — не только я.
> Момент между development и production, когда код ещё не чистился
Это все ещё development, среда testing === production
Обычный цикл разработки:
development (сырой код, консольлоги, дебаггеры) -> testing
testing (идеальный код, без отладочной инфы, сжатый) if !ok -> development else -> production
production (идеальный код, без отладочной инфы, сжатый)
Это все ещё development, среда testing === production
Обычный цикл разработки:
development (сырой код, консольлоги, дебаггеры) -> testing
testing (идеальный код, без отладочной инфы, сжатый) if !ok -> development else -> production
production (идеальный код, без отладочной инфы, сжатый)
Так, путаница.
Firebug lite в сжатом виде — 130 килобайт?
Тогда «Он нужен исключительно для production» или «только при разработке и в production коде — отключается.»?!
Так если проще использовать что-то типа:
а потом например сделать:
egrep -v 'debugMe.*;$' ./script.js > ./script.production.js
Firebug lite в сжатом виде — 130 килобайт?
Тогда «Он нужен исключительно для production» или «только при разработке и в production коде — отключается.»?!
Так если проще использовать что-то типа:
function debugMe(msg) {
if (console != undefined && typeof(console.log) == "function")
console.log(msg);
else
alert(msg); // по необходимости
}
debugMe('Awesome bug');
а потом например сделать:
egrep -v 'debugMe.*;$' ./script.js > ./script.production.js
IE8 ругается "'time' is null or not an object" на строчку:
Заработало когда поменял на:
if (!original.time) {
Заработало когда поменял на:
if (original !== undefined && !original.time) {
а не хотите выложить это на гитхаб, например?
В Firefox тоже есть встроенная консоль начиная с 4-ой версии.
for (var i = methods.length; i--;)
i>0?
Не обязательно. Это обратный цикл и такая запись — вполне корректная.
>>original[methodName].apply(original, arguments);
8 и 9 ишаки не хотят применять эппли к методам оригинальной консоли.
8 и 9 ишаки не хотят применять эппли к методам оригинальной консоли.
Господи, какие же они тупые!
Fixed, смотрите топик и репозиторий
Консоль встроена в Хром, Оперу, IE и устанавливается с Firebug в Фоксе.Прибавлю к этому, что Firefox 4 содержит встроенную консоль (не такую навороченную, правда, как в Firebug), которую можно вызвать сочетанием клавиш
FF
Переопределение напрямую:
Переопределение как св-во window:
Поэтому я бы рекомендовал не переопределять объект console, а писать свой объект делегат, вызывающий методы оригинальной консоли для каждого браузера только в режиме development.
Переопределение напрямую:
console = {} // throws TypeError: setting a property that has only a getter
Переопределение как св-во window:
window.console = {} // Делает вид, что создает в глобале объект console, но на самом деле не трогает никаким разом тот console, что есть firebug
console.log(console) // Object { firebug="1.6.2", userObjects=}
Поэтому я бы рекомендовал не переопределять объект console, а писать свой объект делегат, вызывающий методы оригинальной консоли для каждого браузера только в режиме development.
Спасибо, это существенно. Но это и легко пофиксить, смотрите топик или репозиторий
IE6 ругается на
delete global.console; :(
delete global.console; :(
большое спасибо за скрипт!
сделал для него userscript
сделал для него userscript
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Делаем консоль чуточку удобнее