Firebug и console

Firebug и console

При написании JS кода для сайта часто встает вопрос о его отладке. Раньше для этого я использовал (стыдно признаться ;-) обычный alert. Но, несмотря на очевидную простоту подхода, у этого метода есть и свои серьезные минусы.

Сегодня мы рассмотрим некоторые приемы для работы с консолью в незаменимом плагине для Firefox — Firebug, о котором мы уже как-то писали (статьи «Расширения для Firebug» и «Ящик инструментов 3х3 для сеошника»).

Знакомство

Еще раз обращаю ваше внимание, что в этой статье мы рассматривает работу console именно в Фаербаге, несмотря на то, что она поддерживается и другими расширениями и браузерами.

Итак, для начала найдем эту самую консоль. В Фаербаге есть специальная вкладка:

Firebug console

Основные методы

Итак, давайте рассмотрим методы записи в нее. Первый и самый простой — console.log(). Надпись «Привет, я — консоль» на предыдущей картинке сделана с помощью этого метода. Те из вас, кто рассматривал ошибки Фаербага, так же видели и результат другого метода — console.error():

Firebug console error

Это метод дает более детальную информацию о сообщении.

Помимо console.log и console.error, так же есть методы console.debug(), console.info() и console.warn(). В консоли они будут выглядеть следующим образом:

Firebug console: debug, info и warn

Все эти методы, кроме console.info(), так же показывают файл и номер строки, где они были вызваны.

Еще есть замечательный метод console.dir(), который выводит все атрибуты и методы указанного объекта:

Firebug console.dir

А метод console.dirxml() показывает всю информацию об указанном XML или HTML узле документа:

Firebug console.dirxml

Группировка данных при выводе

Часто возникает необходимость как-то сгруппировать выводимые в консоль данные, например когда что-то выводится в цикле. Для этого существуют методы console.group() для открытия группы и console.groupEnd() для ее закрытия. Выглядит это следующим образом:

Firebug console.group

Для этого используется вот такой синтаксис:

...
console.group('Object #' + object.id);
console.dir(object);
console.groupEnd();
...

Еще вы можете делать вложение групп, если это необходимо.

Измерение времени выполнения

Когда возникает необходимость узнать время выполнения какой-то части кода, можно использовать методы console.time() и console.timeEnd(). Использовать следует следующим образом:

...
console.time("date");
// Операция, время исполнения которой нужно замерить
console.timeEnd("date");
...

А результат будет такой:

Firebug console.time 

Заключение

Думаю, основные и самые полезные методы мы рассмотрели. Используя их, можно находить ошибки в коде, следить за исполнением функции и проверять скорость работы ваших скриптов легко и просто. 

Кроме того, консоль Фаербага поддерживает так же и другие методы, описание которых можно найти в АПИ консоли Фаербага.

Расскажите друзьям

Оцените статью:
  • 1
  • 2
  • 3
  • 4
  • 5

Комментарии — 19

Zick
Да, клевая штука, давно юзаю)
#
Zick
Zick
Еще стоило написать про отладку скриптов (точки останова)
#
Zick
Olexandr
>Еще стоило написать про отладку скриптов (точки останова)
А еще при отладке здорово помогает старая добрая ф-я debugger;
Evgenij
С консолью еще много интересных вещей можно делать (типа trace или функции для работы с временем, чтобы измерять скорость работы функций или XHR запросов)
http://firebug.ru/console.html

Только потом все консольные штуки надо убирать, иначе IE будет выдавать ошибку.
Я обычно делаю враппер для консольки, в котором проверяю, что мы не в IE.
Evgenij
Сорри, про время в статье есть. Не заметил. А вот про трейс нету.
Чистяков Денис
Спасибо, кратко и по делу )
Про console.time(); и console.timeEnd(); -- не знал, удобно.
Пока читал заметил замечательную "подгрузку" картинок, сначала думал что показалось, оказалось нет )
Замечательно выглядит, ваша разработка?
Я правильно понимаю вы таким образом уменьшаете скорость загрузки страницы, откладывая на потом?

P.S. кавычки экранируются лишний раз в предпросмотре, по крайней мере.
#
Чистяков Денис
Grin
Денис, это плагин LazyLoad для jQuery. Таким образом страницы быстрее загружаются и экономится трафик.
Чистяков Денис
@Grin
Спасибо, возьму на заметку, теоретически я так и понял -- просто раньше не натыкался )
Жаль только, что он даже уже закешированные картинки показывает "через себя".
#
Чистяков Денис
darya
Эта штука - реальный помощник - давно ей пользуюсь и очень довольна!
#
darya
Sergey
ага. этот плагин незаменим...
Валентин
аффтар, добро пожаловать в интернет
фаербаг истина давно всем известная
#
Валентин
DeveloperGuru.NET
А что будет, если такой код (с console) запустить в другом браузере? Ошибки? Есть какой-то стандартный способ писать мультибраузерный код (пусть работающий в некоторых браузерах без сообщений console, но и без обшибок).
Чистяков Денис
Многие современные браузеры поддерживают, но можно же сделать свою обертку сделать и отдавать только избранным )
#
Чистяков Денис
stadr
Пользуюсь недавно, даже не знаю как до этого без него жилось ))
дома прочитаю до конца. спс за статью
Kein
Как я рад что подписался на этот rss канал)) а я мучался с самописным dbg.msg() dbg.obj();
Отличная информация)
#
Kein
Гость
2 Валентин То, что Вы знаете про Firebug не означает что про него знают все. Я, допустим, хоть и давно пользуюсь им, но про работу с консолью не знал.
#
Гость
io
Как то давно, когда я обнаружил эти возможности консоли, очень захотелось что-нить полезное с помощью этого сделать, так получился микро велосипед для unit-тестирования:
http://github.com/Rakoth/js_testing/blob/master/tests.js
#
io  
asdasd_man
а какое предназначение у командной строки, которая под консолью? там еще '>>>' в левом нижнем углу
#
asdasd_man
Gairon
с её помощью можно запускать куски JS кода. Очень полезная вещь при работе с точками останова: останаливаем выполнение кода у нужном месте и начинаем экспериментировать в среде метода, в котором остановились.

Новый комментарий

как выглядит какой тег
жирный текст <b>жирный текст</b>
курсивный тект <i>курсивный тект</i>
зачеркнутый текст <s>зачеркнутый текст</s>
подчеркнутый текст <u>подчеркнутый текст</u>
ссылка <a href="адрес">ссылка</a>
function foo() { ... }
<pre><code>function foo() { ... } </code></pre>
разрешенные теги или посмотреть как будет выглядеть
как выглядит какой тег
жирный текст <b>жирный текст</b>
курсивный тект <i>курсивный тект</i>
зачеркнутый текст <s>зачеркнутый текст</s>
подчеркнутый текст <u>подчеркнутый текст</u>
ссылка <a href="адрес">ссылка</a>
function foo() { ... }
<pre><code>function foo() { ... } </code></pre>
разрешенные теги или посмотреть как будет выглядеть

metin2 pvp metin2 pvp serverler pvp serverler