Firefox – Stepan Suvorov Blog https://stepansuvorov.com/blog Release 2.0 Mon, 01 Apr 2013 18:23:16 +0000 en-US hourly 1 https://wordpress.org/?v=6.3.1 Возможности консоли браузера https://stepansuvorov.com/blog/2013/04/%d0%b2%d0%be%d0%b7%d0%bc%d0%be%d0%b6%d0%bd%d0%be%d1%81%d1%82%d0%b8-%d0%ba%d0%be%d0%bd%d1%81%d0%be%d0%bb%d0%b8-%d0%b1%d1%80%d0%b0%d1%83%d0%b7%d0%b5%d1%80%d0%b0/ https://stepansuvorov.com/blog/2013/04/%d0%b2%d0%be%d0%b7%d0%bc%d0%be%d0%b6%d0%bd%d0%be%d1%81%d1%82%d0%b8-%d0%ba%d0%be%d0%bd%d1%81%d0%be%d0%bb%d0%b8-%d0%b1%d1%80%d0%b0%d1%83%d0%b7%d0%b5%d1%80%d0%b0/#respond Mon, 01 Apr 2013 18:17:42 +0000 http://stepansuvorov.com/blog/?p=928 Continue reading ]]> Речь пойдет о начинке встроенного объекта console в браузерах Chrome и Firefox.

Начнем с простого – метод console.log(). Базовый синтаксис:

console.log(obj1 [, obj2, ..., objN);
console.log(msg [, subst1, ..., substN);

Если с первым вариантом использования все понятно, то со вторым следует разобраться: в данном случае мы можем использовать шаблон первым параметром, в который будут подставлены переменные, пример:

console.log("%s is %d years old.", "Bob", 42)

и выведет оно, как вы уже догадались: Bob is 42 years old.

Для подстановки можно использовать следующие подшаблоны:

  • %o – для ссылки на объект
  • %d, %i – целые чила (integer)
  • %s – строки
  • %f – числа с плавающей запятой (float)

Далее перейдем к схожим методам, а именно console.info(), console.warn(), console.error(), console.debug(). Все они работают аналогично console.log(), а метод console.debug() вообще является его алисом(deprecated). Отличие по сути только в варианте вывода(примеры для FireFox и Chrome):

 

Иногда, когда объект вложеный удобнее использовать не console.log(), а console.dir(), который выведет все в виде структуры:

console.log(location)
console.dir(location)

чтобы вывести красиво HTML/XML можно использовать console.dirxml():

console.dirxml(document.body)

правда, если говорить о Chrome, то там объединили понятие dir/dirxml и log и для сложных обектов со вложенными свойствами используют dir/dirxml вместо log по умолчанию.

Если в консоль выводится много информации, то будет полезно разделять информацию по группам исползуя метод console.group() плюс вспомогательные console.groupEnd() и console.groupCollapsed():

console.clear()
console.group("module A")
console.log('a')
console.log('a')
console.log('a')
console.group("nested module B")
console.log('b')
console.log('b')
console.log('b')
console.groupEnd()
console.groupCollapsed("nested collapsed module C")
console.log('c')
console.log('c')
console.log('c')
console.groupEnd()
console.groupEnd()
console.group("module D")
console.log('d')
console.log('d')
console.log('d')
console.groupEnd()

Лично мне кажется, что группировка реализована не совсем удобно: нельзя записывать данные в несколько групп паралельно, т.е. пока одна группа не закрыта – мы пишем в нее.

Для оценки времени выполнения чего-либо существует удобный метод console.time() и console.timeEnd(), синтаксис:

console.time(timerName);
console.timeEnd(timerName);

Пример:

console.time("timer1")
console.time("timer2")
var i = 10000, j = 0;
while(i--){ j++}
console.timeEnd("timer1")
while(j--){}
console.timeEnd("timer2")

Есть также в консоли и метод для трассировки вызова – console.trace(). Наиболее полезное примененеие ему – вывод полного стека вызовов при возникновении ошибки – что делает браузер по умолчанию, но всеже, если мы переопределили стандартное поведение браузера, нам очень поможет этот метод:

(function foo() {
  function bar() { console.trace(); };
  bar();
})()

К сожалению, в FireBug это не работает, а Chrome выдал следующее:

Через консоль еще можно проверять ожидаемые значения используя метод console.assert(), который в случае невыполнения условия внутри вернет console.error().

Для работы с DOM есть ряд полезных хелперов:

  • $(), $$() – краткая запись для document.querySelector
  • $x() – получение элемента по XPath
  • $0 – выбранный инспектором элемент
  • $1 – предыдущий выбранный инспектором элемент
  • $n() – показать один из пяти последних выбранных элементов (параметром идет номер элемента) – работает только для FireBug

Другие полезные хелперы:

  • keys() – выводит ключи объекта
  • values() – выводи значения объекта
  • inspect() – открывает объект для инспектирования
  • clear() – очищает консоль

Ну и конечно самый главный метод help(), плохо что его так и не реализовали в Chrome, но в FireBug он работает отлично, рекомендую.

 

Ну и еще как бонус, для тех, кто долистал этот посто до конца. В FireBug есть интересный синтаксис работы с переменными из замыкания используя “%“:

function Person(name)
{
    this.introduce = function()
    {
        return 'Hello, my name is ' + name;
    }
}

var someone = new Person("Arthur");
someone.%name; // выведет "Arthur"

 

Советую следить за обновлениями набора методов, так как бразуры постоянно совершенствуются и добавляют новые интересные плюшки.

]]>
https://stepansuvorov.com/blog/2013/04/%d0%b2%d0%be%d0%b7%d0%bc%d0%be%d0%b6%d0%bd%d0%be%d1%81%d1%82%d0%b8-%d0%ba%d0%be%d0%bd%d1%81%d0%be%d0%bb%d0%b8-%d0%b1%d1%80%d0%b0%d1%83%d0%b7%d0%b5%d1%80%d0%b0/feed/ 0
Автодополнение к Firebug консоли https://stepansuvorov.com/blog/2012/05/%d0%b0%d0%b2%d1%82%d0%be%d0%b4%d0%be%d0%bf%d0%be%d0%bb%d0%bd%d0%b5%d0%bd%d0%b8%d0%b5-%d0%ba-firebug-%d0%ba%d0%be%d0%bd%d1%81%d0%be%d0%bb%d0%b8/ https://stepansuvorov.com/blog/2012/05/%d0%b0%d0%b2%d1%82%d0%be%d0%b4%d0%be%d0%bf%d0%be%d0%bb%d0%bd%d0%b5%d0%bd%d0%b8%d0%b5-%d0%ba-firebug-%d0%ba%d0%be%d0%bd%d1%81%d0%be%d0%bb%d0%b8/#respond Sun, 20 May 2012 15:37:39 +0000 http://stepansuvorov.com/blog/?p=230 Понял что многие разработчики, использующие в своей работе firebug console, не переставляют что к ней появилось дополнение реализующее автокомплит (То что так хорошо работает в Chrome)

Вот оно Firebug Autocompleter, используйте на здоровье.

]]>
https://stepansuvorov.com/blog/2012/05/%d0%b0%d0%b2%d1%82%d0%be%d0%b4%d0%be%d0%bf%d0%be%d0%bb%d0%bd%d0%b5%d0%bd%d0%b8%d0%b5-%d0%ba-firebug-%d0%ba%d0%be%d0%bd%d1%81%d0%be%d0%bb%d0%b8/feed/ 0
Debug ON. Кнопка в FireFox для разработчика. https://stepansuvorov.com/blog/2012/03/debug-on/ https://stepansuvorov.com/blog/2012/03/debug-on/#comments Tue, 20 Mar 2012 19:34:22 +0000 http://stepansuvorov.com/blog/?p=175 Continue reading ]]> В дополнение к статье http://habrahabr.ru/post/140369/ о том, как можно выводить для себя ошибки в консоль, расскажу как можно еще сделать этот переключатель не “путем клика например, на значке копирайта“, а кнопкой в браузере.

Почти все разработчики знают, что javascript код можно выполнить прям в строке браузера написав соответственно javascript:[your code here] (например javascript:alert(document.cookie)). Но новые браузеры стали уже блокировать эту возможность, и непосредственный ввод кода может не сработать.

Идем дальше – делаем кнопку: создаем закладку(bookmark), можно просто пустую.

И меняем ей свойство location:

У нас появилась кнопка-закладка, при клике на которую выполнится javascript код.

Дальше уже дело техники. Причем тут мы можем сделать не только включение, но и отключение этой же кнопкой.

 

UPD: а вот пример кода.

 

 

]]>
https://stepansuvorov.com/blog/2012/03/debug-on/feed/ 2