使用 Firefox SDK 的低级别 api 获取当前页面的 window
Getting the current page's window with the low level api of the Firefox SDK
我正在创建一个 Firefox 扩展,用于向某些网页添加一些功能。我需要检查某些元素是否存在并突出显示它们,因此我使用 xpath 来检查和定位它们。我知道如何通过选项卡和端口操作选项卡和内容,但我确实需要使用低级别 API 并且在没有端口的情况下进行操作。问题是,我不知道如何获取当前打开的选项卡 window(我也可以打开选项卡,但我没有获取 window)。我已经尝试打开一个选项卡并:
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();
}})
我看到了很多检索不同类型 windows 的方法,但我没有找到关于差异的解释。例如。 Chroe window, XUL window, NSI window, base window...我只需要当前网页的文档window.
欢迎任何澄清。
提前致谢,
我只需要监听另一个选项卡事件:
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();
}
我正在创建一个 Firefox 扩展,用于向某些网页添加一些功能。我需要检查某些元素是否存在并突出显示它们,因此我使用 xpath 来检查和定位它们。我知道如何通过选项卡和端口操作选项卡和内容,但我确实需要使用低级别 API 并且在没有端口的情况下进行操作。问题是,我不知道如何获取当前打开的选项卡 window(我也可以打开选项卡,但我没有获取 window)。我已经尝试打开一个选项卡并:
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();
}})
我看到了很多检索不同类型 windows 的方法,但我没有找到关于差异的解释。例如。 Chroe window, XUL window, NSI window, base window...我只需要当前网页的文档window.
欢迎任何澄清。 提前致谢,
我只需要监听另一个选项卡事件:
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();
}