Ведение журнала консоли из надстройки Firefox

Документация Mozilla (https://addons.mozilla.org/en-US/developers/docs/sdk/latest/dev-guide/console.html) говорит, что я должен использовать console.log для создания сообщений из расширения. Говорят, что эти сообщения появляются в консоли ошибок Firefox. Но это не мой случай. Сегодня я впервые использую конструктор аддонов и хочу создать расширение, которое переключает вкладки при определенных событиях. Вкладки действительно переключаются на вкладку, которую я ожидал, поэтому мой код определенно работает. Но вывод console.log нигде не видно.

Я установил фильтр на «Все». Все, что я вижу, это предупреждения CSS от самого конструктора аддонов.

Я также установил Firebug. Тоже ничего не показывает. (Однако это прекрасно работает при использовании console.log из контекста веб-страницы.) Проблема с Firebug заключается в том, что он в любом случае включен только для одной/некоторых вкладок, поэтому при переключении вкладок он бесполезен. Мне нужно окно журнала, которое всегда там.

Итак, куда же попадают выходные данные из console.log?


person ygoe    schedule 13.04.2013    source источник
comment
Вы используете консоль из Firefox->Для веб-разработчиков->Консоль ошибок (Ctrl+Shift+J)?   -  person Tomasz Dzięcielewski    schedule 13.04.2013
comment
Да именно так, с той же горячей клавишей. Прямо из Firefox, который всегда был там.   -  person ygoe    schedule 14.04.2013


Ответы (4)


Идите вперед и поместите тест console.log("something") в свой аддон main();

Если в консоли ошибок (вкладка «Сообщения») ничего не отображается, возможно, Firefox не настроен для отображения console.log (недавно это произошло с jetpack sdk 1.14). См.: Подробности об изменениях поведения console.log в SDK 1.14.

Краткое и грязное резюме: в about:config установите extensions.sdk.console.logLevel на "all"

Хотя из вашего вопроса:

Я установил фильтр на «Все».

... похоже, вы уже знали об этом. Так что не совсем понятно, что вы хотели этим сказать.

person jongo45    schedule 13.04.2013
comment
Я установил фильтр только с кнопками, которые доступны в окне журнала ошибок, а не со скрытой настройкой. Но из статьи, на которую вы ссылаетесь, новым значением по умолчанию будет ошибка, которая печатает только вызовы console.error(). Я изменил свои вызовы на это, и теперь они отображаются в окне журнала (в виде сообщений об ошибках). Но у этого есть то преимущество, что я могу отфильтровать все предупреждения от самого компоновщика дополнений, поэтому использование уровня ошибки для моих отладочных сообщений на самом деле весьма полезно. - person ygoe; 14.04.2013
comment
На первый взгляд похожее примечание: обновление до надстройки SDK 1.14, похоже, «сломано» (или прекращено) alert() - person Lori; 14.04.2013
comment
Я даже не осмелился попробовать alert из контекста chrome. ;-) - person ygoe; 14.04.2013
comment
Очень важный последний шаг — перезапустить Firefox. - person beeftosino; 01.03.2021

Вместо того, чтобы делать var aConsoleService = Cc..., просто вставьте следующее, и вы можете использовать все:

Cu.import('resource://gre/modules/devtools/Console.jsm');

теперь можно делать что угодно, console.log('blah'), console.time('rawr'), console.endTime('rawr') и т.д. и т.п.

person Noitidart    schedule 18.08.2014
comment
Действительно ли Cu.import работает? У меня есть примеры Components.utils.import - person dbreaux; 12.12.2014
comment
@dbreaux Обычно разработчики используют этот ярлык: Cu определяется как Components.utils, переходя: const {interfaces: Ci, utils: Cu, classes: Cc} = Components;, а в addon-sdk они идут: var {Cu, Ci, Cc} = require('chrome'); - person Noitidart; 12.12.2014

Просто для полноты: в загрузочном дополнении, не основанном на SDK, мне пришлось добавить эти две строки в bootstrap.js, чтобы получить поддельный console.log():

var aConsoleService = Cc["@mozilla.org/consoleservice;1"].getService(Ci.nsIConsoleService);
var console = {log:function(str){aConsoleService.logStringMessage(str);}}

Может еще кому пригодится, думаю..

person hallvors    schedule 07.04.2014
comment
Чтобы процитировать здесь - в Webkit В браузерах консоль встроена, и свойство console всегда доступно. Консоль Firefox зависит от установленного и включенного Firebug (или других надстроек). В IE7 нет консоли, в IE8 есть консоль, но свойство console существует только при запуске IE Developer Tools. - person user3526; 02.09.2014

Я думаю, они что-то изменили, теперь console.log не отображается. Я использую console.error для отладки, он все еще отображается в ctrl-shift-j.

На этой странице говорится об устаревании консоли ошибок и использовании вместо нее веб-консоли. Вероятно, это связано. https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIConsoleService

Для этого не требуется SDK.

person user2547526    schedule 18.08.2014