Советы по реализации моей собственной консоли в качестве XPCOM - PullRequest
1 голос
/ 04 июля 2010

Я хочу использовать свою собственную консоль для своего расширения, где я буду печатать различную отладочную информацию. Я думал, что сделаю это, сделав

window.open("chrome://myextension/content/console.xul"..

и затем печатать в текстовые поля этого окна. Вы уже видите что-то не так здесь? =)

Теперь у меня есть небольшая проблема, window.open немедленно возвращается, и если я затем продолжаю и немедленно использую функцию myconsole.log ("boo"), то содержимое в этом новом окне еще не загружено, и я получу ошибки. Это означает, что мне нужно дождаться окончания загрузки консоли, прежде чем я смогу печатать на нее. Каков будет правильный способ сделать это? Я мог бы использовать nsITimer или thread.sleep внутри метода log, чтобы продолжать проверять, загружен ли он уже, но мне это не нравится. Я также не знаю, как правильно использовать событие window.onload, потому что я вижу только что-то вроде window.onload = function () {весь мой код расширения ..}, который мне тоже не нравится.

Я хочу, чтобы он использовался в любое время где угодно, как-то так

console = Cc["@myconsole;1"].getService().wrappedJSObject;
console.log("foo");

Любой совет? Спасибо за терпение =)

1 Ответ

2 голосов
/ 13 июля 2010

Сначала я бы реализовал это как модуль ведения журнала бэкенда:

https://developer.mozilla.org/en/JavaScript_code_modules

А затем написать настраиваемое окно Chrome, которое взаимодействует с ним (получает все журналы, очищает журналы, подписывается, чтобы получать новые события журнала)

Чтобы сэкономить время кодирования, см. Также console2 и (наименее известная) консоль трассировки firebug :

...