Firefox 关于将我自己的控制台实现为XPCOM的建议

Firefox 关于将我自己的控制台实现为XPCOM的建议,firefox,firefox-addon,xpcom,Firefox,Firefox Addon,Xpcom,我想使用我自己的控制台进行扩展,在那里我将打印出各种调试信息。我想我会这样做的 窗口。打开(“chrome://myextension/content/console.xul“。 然后打印到该窗口的文本框中。您是否已经看到此处有错误?=) 现在我遇到了一个小问题,window.open立即返回,如果我接着立即使用myconsole.log(“boo”)函数,那么新打开的窗口中的内容还没有加载,我将得到错误。这意味着在打印到控制台之前,我必须等待控制台完成加载。正确的做法是什么?我可以在log方法

我想使用我自己的控制台进行扩展,在那里我将打印出各种调试信息。我想我会这样做的

窗口。打开(“chrome://myextension/content/console.xul“。

然后打印到该窗口的文本框中。您是否已经看到此处有错误?=)

现在我遇到了一个小问题,window.open立即返回,如果我接着立即使用myconsole.log(“boo”)函数,那么新打开的窗口中的内容还没有加载,我将得到错误。这意味着在打印到控制台之前,我必须等待控制台完成加载。正确的做法是什么?我可以在log方法中使用nsimeter或thread.sleep来检查它是否已经加载,但我不喜欢这样。我也不知道如何正确使用window.onload事件,因为我看到的唯一方式是类似于window.onload=function()的smth,我也不喜欢它

我希望它能像这样随时随地使用

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

有什么建议吗?感谢耐心=)

我会首先将其作为后端日志模块实现:

然后编写一个与之交互的自定义chrome窗口(获取所有日志、清除日志、订阅以获取新日志事件)


要节省自己的编码时间,请参见和(最不为人所知):

您可以维护要记录的项目列表,并在计时器上的try块中调用log()函数,直到成功,然后刷新列表。