Дополнения

Протоколирование (Логирование)

We are planning to deprecate the use by Firefox add-ons of the techniques described in this document.

Don't use these techniques to develop new add-ons. Use WebExtensions instead.

If you maintain an add-on which uses the techniques described here, consider migrating it to use WebExtensions instead.

Add-ons developed using these techniques might not work with multiprocess Firefox (e10s), which is already the default in Firefox Nightly and Firefox Developer Edition, and will soon be the default in Beta and Release versions of Firefox. We have documentation on making your add-ons multiprocess-compatible, but it will be more future-proof for you to migrate to WebExtensions.

A wiki page containing resources, migration paths, office hours, and more, is available to help developers transition to the new technologies.

Перед использованием, вам нужно изучить основы jpm.

Консоль для DOM-объекта полезна для отладки JavaScript. Так как DOM-объекты недоступны для главного кода дополнения (add-on), то SDK предоставляет свой собственный глобальный объект "консоль" (console) с большинством таких же методов, как и у DOM-консоли, включая методы для протоколирвоания ошибок (error), предупреждений (warning) или информационных сообщений. Для доступа к консоли не нужно получать что-либо, используя require(). Она уже доступна автоматически.

Метод console.log() выводит информационное сообщение:

console.log("Hello World");

Попробуйте:

  • создайте новую папку и перейдите в неё
  • выполните jpm init со значениями по умолчанию
  • откройте "index.js" и добавьте строку, указанную в примере выше
  • выполните jpm run

Firefox запустится, и в терминале, где вы ввели jpm run, появится следующая строка:

info: Hello World!

Консоль в скриптах Content Scripts

Вы можете использовать консоль в скриптах content scripts так же, как и вашем главном коде дополнения. Следующий аддон (add-on) выведет в лог HTML-содержимое каждой закладки, загруженной пользователем, используя console.log() изнутри скрипта content script:

require("sdk/tabs").on("ready", function(tab) {
  tab.attach({
    contentScript: "console.log(document.body.innerHTML);"
  });
});

Консоль Output

Если вы запускаете дополнение из терминала (например, выполня jpm run или jpm test), тогда сообщения консоли появятся в этом же терминале.

Если вы установили расширение в Firefox тогде сообщения появятся в консоли браузера Firefox.

Но обратите внимание, что по умолчанию вызовы console.log() не отобразят ничего в Error Console для любых установленных дополнений. Это правило работает и для дополнений, установленных с использованием Add-on Builder, и для установленных с помощью утилит, таких как Extension Auto-installer.

Смотрите "Уровни логирования" в справочной документации для более подробной информации.

Дальнейшее изучение

Полное API консоли смотри в API-справочнике.

Метки документа и участники

 Обновлялась последний раз: pk.prog,