javascript - .gBrowser 未定义

标签 javascript firefox firefox-addon firefox-addon-restartless

我正在编写一个无需重新启动的 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 is undefined

...指向该行:

var t = win.gBrowser.browsers.length;

但在抛出错误之前,我收到了警报消息,它为我提供了正确的选项卡数量。因此,错误是在该行执行后抛出的,而不是在执行时直接抛出的。 有谁知道如何解决这个问题,因为扩展在抛出错误后停止工作。

问候

附注:如果有人有更好的标题,请随意编辑。

最佳答案

使用winMediator.getEnumerator(null)将为您提供所有类型的窗口,可能是也可能不是浏览器窗口。您应该尝试更改以下行

var mrw = winMediator.getEnumerator(null);

var mrw = winMediator.getEnumerator('navigator:browser');

关于javascript - .gBrowser 未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19789071/

相关文章:

javascript - 使用 JavaScript 将字符串转换为对象

javascript - 自定义事件触发它由相同的事件处理程序缓存

html - 如何检查 Flexbox 布局中的间隙支持

javascript - 维基百科 AJAX 调用

javascript - 如何跟踪基于网络的登录和注销?

javascript - 如何记录301重定向URL?

firefox-addon - 火狐 SDK : correct way to play audio from the url in 2015 year?

firefox - 您如何打包和自托管您的 Firefox 扩展程序?

javascript - css-grid 在 Firefox 和 Chrome 中呈现不同

javascript - Firefox 网站如何突出显示导航栏上的项目?