Tabs Firefox插件获取选项卡正文内容

Tabs Firefox插件获取选项卡正文内容,tabs,firefox-addon,firefox-addon-sdk,Tabs,Firefox Addon,Firefox Addon Sdk,大家好,我有一个关于firefox插件的问题: 例如,如何从选项卡获取正文内容 var content = require("tabs").activeTab.documentContent.body.innerHTML; 非常感谢。您可以使用以下内容(在DOMContentLoaded之后)获取当前所选选项卡的正文: 注意:这仅在标准扩展中有效,在SDK中无效。您可以使用以下命令(在DOMContentLoaded之后)获取当前选定选项卡的正文: 注意:这只在标准扩展中有效,在SDK中不起作

大家好,我有一个关于firefox插件的问题:

例如,如何从选项卡获取正文内容

var content = require("tabs").activeTab.documentContent.body.innerHTML;

非常感谢。

您可以使用以下内容(在
DOMContentLoaded
之后)获取当前所选选项卡的正文:


注意:这仅在标准扩展中有效,在SDK中无效。

您可以使用以下命令(在
DOMContentLoaded
之后)获取当前选定选项卡的正文:


注意:这只在标准扩展中有效,在SDK中不起作用。

附加SDK不允许直接访问选项卡内容-其想法是附加组件和选项卡最终可能存在于不同的进程中。您要做的是向选项卡中注入内容脚本,以获取必要的数据,如下所示:

var-tab=require(“tabs”).activeTab;
附页({
contentScript:“self.postMessage(document.body.innerHTML);”,
onMessage:函数(数据)
{
console.log(“接收到的选项卡数据:”+数据);
}
});

加载项SDK不允许直接访问选项卡内容-其想法是加载项和选项卡最终可能存在于不同的进程中。您要做的是向选项卡中注入内容脚本,以获取必要的数据,如下所示:

var-tab=require(“tabs”).activeTab;
附页({
contentScript:“self.postMessage(document.body.innerHTML);”,
onMessage:函数(数据)
{
console.log(“接收到的选项卡数据:”+数据);
}
});
您可以尝试以下方法:

var tabs = require("sdk/tabs");
var { getTabForId, getTabContentWindow } = require ("sdk/tabs/utils");
var tab = require("tabs").activeTab;
var window = getTabContentWindow (getTabForId(tab.id));
var content = window.document.body.innerHTML;
但也许更好。

您可以尝试以下方法:

var tabs = require("sdk/tabs");
var { getTabForId, getTabContentWindow } = require ("sdk/tabs/utils");
var tab = require("tabs").activeTab;
var window = getTabContentWindow (getTabForId(tab.id));
var content = window.document.body.innerHTML;


但是也许更好。

很好,我从哪里得到变量gBrownser?这个问题与SDK特别相关,因此像您这样的典型扩展模式将无法工作。不幸的是,实际的解决方案(见下文)有点复杂。@canuckistani:我在这个答案发布时添加了SDK标签,OP并没有真正说明-所以我认为-1在这里是不合理的。Wladimir-啊,好的。但愿我能把它拿回去,但我等得太久了@lwburk-对不起@卡努基斯塔尼-我编辑过,我认为这将允许你撤回你的投票,如果你愿意的话。不用担心,因为我显然弄错了。很好,我从哪里得到变量gBrownser?这个问题特别与SDK有关,所以像您这样的典型扩展模式将不起作用。不幸的是,实际的解决方案(见下文)有点复杂。@canuckistani:我在这个答案发布时添加了SDK标签,OP并没有真正说明-所以我认为-1在这里是不合理的。Wladimir-啊,好的。但愿我能把它拿回去,但我等得太久了@lwburk-对不起@卡努基斯塔尼-我编辑过,我认为这将允许你撤回你的投票,如果你愿意的话。这两种方式都不用担心,因为我显然弄错了。完美的例子是,如何在没有postMessage消息的情况下做到这一点?(不显示页面中的消息)。您不可以,正如我所说,您不能直接访问选项卡内容-至少在使用官方API时不能。好的,请执行。。。我如何关闭出现的消息?马可斯:不确定你的意思-postmessage不会向用户显示任何内容。好的,对不起。。。我在书页上停了一会儿。正如我在另一篇文章中看到的,SDP(相同域策略)在这种情况下会产生影响。获取内容的唯一方法是使用插件修改文档以提醒文档内容。完美的示例,如何删除postMessage消息?(不显示页面中的消息)。您不可以,正如我所说,您不能直接访问选项卡内容-至少在使用官方API时不能。好的,请执行。。。我如何关闭出现的消息?马可斯:不确定你的意思-postmessage不会向用户显示任何内容。好的,对不起。。。我在书页上停了一会儿。正如我在另一篇文章中看到的,SDP(相同域策略)在这种情况下会产生影响。获取内容的唯一方法是使用插件修改文档,以提醒文档内容。您是否了解它是否适用于SDK?您是否了解它是否适用于SDK?