我正在编写一个无需重启的 Firefox 扩展,我必须在其中枚举所有打开的选项卡并使用它们。
这是引发错误的代码部分:
getInfoString : function ()
{
infos = "";
HELPER.alerting("url", "URL-Function");
var winMediator = Components.classes["@mozilla.org/appshell/window-mediator;1"].getService(Components.interfaces.nsIWindowMediator);
HELPER.alerting("url", "Mediator initialized");
var mrw = winMediator.getEnumerator(null);
while(mrw.hasMoreElements())
{
var win = mrw.getNext();
var t = win.gBrowser.browsers.length;
HELPER.alerting("url", "browsers: " + t);
for (var i = 0; i < t; i++)
{
var b = win.gBrowser.getBrowserAtIndex(i);
if(b.currentURI.spec.substr(0,3) != "http")
{
continue;
}
HELPER.alerting(b.title,b.currentURI.spec);
var doc = b.contentDocument;
var src = doc.documentElement.innerHTML;
infos = infos + src
HELPER.alerting("doc", src);
}
}
return infos;
}
我在测试这个时运行了一个 JavascriptDebugger-Addon,Firefox 执行一切正常
HELPER.alerting("url", "browsers: " + t);
但是在这一行之后,调试器插件会抛出一个错误,说:
win.gBrowser 未定义
...指向线:
var t = win.gBrowser.browsers.length;
但在它引发错误之前,我得到了我的警报消息,它给了我正确数量的选项卡。因此,在执行该行之后会引发错误,而不是在执行该行时直接引发错误。有谁知道如何解决这个问题,因为在引发错误后扩展程序停止工作。
格雷茨
PS:如果有人对此有更好的标题,请随时编辑。