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>
разрешенные теги или посмотреть как будет выглядеть
counter strike mt2 silkroad pvp metin2 metin2 pvp knight pvp gm olarak başlayan pvpler pvp silkroad pvp serverler counter strike serverler msn show cam show görüntülü sohbet oyunlar suskunlar gazete oku