使用Firefox SDK的低级api获取当前页面的窗口

时间:2016-05-03 23:51:19

标签: firefox-addon firefox-addon-sdk firefox-developer-tools

我正在创建一个Firefox扩展程序,用于向某些网页添加某些功能。我需要检查一些元素是否存在并突出显示它们,所以我使用xpath来检查和定位它们。我知道通过标签和端口操纵标签和内容,但我真的需要使用低级API并且没有端口。问题是,我不知道如何获得当前打开的选项卡窗口(我也可以打开选项卡,但我没有得到窗口)。我已经尝试打开一个标签:

tabs.open({
            url: url,
            onOpen: function onOpen(tab) {

                // get the XUL tab that corresponds to this high-level tab
                var lowLevelTab = viewFor(tab);
                var browser = tab_utils.getBrowserForTab(lowLevelTab);
                var doc = browser.contentDocument;
                console.log(doc); //THIS IS AN EMPTY DOC

                // get the most recent window. This give me a XUL window, and I can't sucessfully execute eval on that...
                var win = utils.getMostRecentBrowserWindow();
}})

我有很多方法可以检索不同类型的窗口,但是我没有找到关于差异的解释。例如。 Chroe窗口,XUL窗口,NSI窗口,基本窗口......我只需要当前网页的文档窗口。

欢迎任何澄清。 提前谢谢,

1 个答案:

答案 0 :(得分:0)

我只需要听另一个标签事件:

onReady: function onOpen(tab) {

                var content = utils.getMostRecentBrowserWindow().content;
                var domInstances = content.document.evaluate(me.getTemplateXpath(), content.document, null, 4, null);
                var res = domInstances.iterateNext();                   
                while (res) {
                    console.log(res);
                    res.style["background-color"] = "orange";
                    res = domInstances.iterateNext();
                }
                callback();
}