Pull to refresh

Comments 35

UFO just landed and posted this here
Там, где нету консоли — нельзя. Например, в ie, в некоторых Фоксах. А ведь они — основная цель. Так что можно только перечислять всё руками.
UFO just landed and posted this here
Так есть же Firebug lite. Или я что-то упустил?
Нет, немножко разные цели.
Firebug Lite — крутая девелоперская штука, которая подключается только при разработке и в production коде — отключается.
То решение, которое в топике больше необходимо для того, чтобы можно было оставлять всякие console.log даже после разработки, в production коде или во время тестирования.
А что мешает оставить Firebug в production? Размер? Так подключайте его динамически по необходимости.
Firebug в сжатом виде — 130 килобайт. Он нужен исключительно для production и то не всегда.
Я хочу использовать обычный Firebug или консолью в Хроме. При этом хочу, чтобы код не сломался в ie6 из-за где-то оставленного console.log. Подключаю заглушку и продолжаю пользоваться обычным Firebug ил консолью в Хроме.
Мсье знатный извращенец. У нас для таких целей при выгрузке на продакшн используется банальный прогон через JSLint.
Ну это не совсем для продакшна) Момент между development и production, когда код ещё не чистился, но его уже тестируют тестировщики без консоли.
«Извращенец» — не только я.
> Момент между development и production, когда код ещё не чистился
Это все ещё development, среда testing === production

Обычный цикл разработки:
development (сырой код, консольлоги, дебаггеры) -> testing
testing (идеальный код, без отладочной инфы, сжатый) if !ok -> development else -> production
production (идеальный код, без отладочной инфы, сжатый)
Момент между development и production обычно обзывают staging. Это тот же самый продакшн, но только для узкого круга лиц. Среда test — это среда для запуска тестов.

По крайней мере, вышеозвученное справедливо для rails.
Так, путаница.
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
Ну вот! То, что вы показали и описано в топике. Только можно запросто использовать все методы консоли и не удивляться, почему не работает в ie)
IE8 ругается "'time' is null or not an object" на строчку:
if (!original.time) {

Заработало когда поменял на:
if (original !== undefined && !original.time) {
а не хотите выложить это на гитхаб, например?
В Firefox тоже есть встроенная консоль начиная с 4-ой версии.
Не обязательно. Это обратный цикл и такая запись — вполне корректная.
>>original[methodName].apply(original, arguments);

8 и 9 ишаки не хотят применять эппли к методам оригинальной консоли.

Господи, какие же они тупые!
Было бы еще неплохо из коробки уметь включать консоль в продакшне ключиком в url'е, как в dbug сделано.
Консоль встроена в Хром, Оперу, IE и устанавливается с Firebug в Фоксе.
Прибавлю к этому, что Firefox 4 содержит встроенную консоль (не такую навороченную, правда, как в Firebug), которую можно вызвать сочетанием клавиш Ctrl+Shift+K или в меню Tools подпунктом Web Console.
FF

Переопределение напрямую:
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; :(
а что говорит? можно скрин?
пофиксил, попробуйте теперь
работает! спасибо)
Sign up to leave a comment.

Articles