Javascript 在新选项卡中打开页面上的所有链接并跟踪这些选项卡
我知道我无法使用SDK从firefox插件中的主函数直接访问DOM,因此我也无法直接从a标记获取href值。如何使我的插件以新选项卡的形式打开页面上的所有链接,并将其添加到数组中?我不想跟踪用户手动打开的新选项卡,只想跟踪此插件创建的选项卡。前一段时间部分解决了这个问题,所以我想我会指出我知道的 由于主脚本无法访问DOM本身,因此它可以将辅助程序附加到当前选项卡。工作者可以读取所有链接并将其存储为列表,然后将该列表发送回加载项。然后,该插件可以打开指向该列表中所有链接的新选项卡 在main中,向选项卡添加内容脚本:Javascript 在新选项卡中打开页面上的所有链接并跟踪这些选项卡,javascript,firefox-addon,firefox-addon-sdk,Javascript,Firefox Addon,Firefox Addon Sdk,我知道我无法使用SDK从firefox插件中的主函数直接访问DOM,因此我也无法直接从a标记获取href值。如何使我的插件以新选项卡的形式打开页面上的所有链接,并将其添加到数组中?我不想跟踪用户手动打开的新选项卡,只想跟踪此插件创建的选项卡。前一段时间部分解决了这个问题,所以我想我会指出我知道的 由于主脚本无法访问DOM本身,因此它可以将辅助程序附加到当前选项卡。工作者可以读取所有链接并将其存储为列表,然后将该列表发送回加载项。然后,该插件可以打开指向该列表中所有链接的新选项卡 在main中,向
function attachScript() {
var worker = tabs.activeTab.attach({
contentScriptFile: self.data.url("content-script.js")
});
worker.port.on("links", function(links) {
for each(var l in links) {
tabs.open(l);
}
}); // Start listening for links sent by the tab's worker
worker.port.emit("get-links"); // Request links from worker
}
在内容脚本中,收到get links消息后,读取所有链接并使用端口将其发送回:
self.port.on("get-links", handleMessage); // Start listening for requests for links on page
function handleMessage(message) {
var anchors = document.getElementsByTagName("a"); // Get all a elements on page
alert(anchors.length); // Report quantity of a elements found
var hrefs = [];
for each (var a in anchors) {
hrefs.push(a.href); // Add all target urls of a elements to array
}
self.port.emit("links", hrefs); // Send array of urls to add-on script
}
至于跟踪标签,我认为保存一份工作人员列表是实现这一目标的合适方式。我还没有试过那个部分,因为我不得不暂停这个项目一段时间。您已经试过哪些代码了?请将问题添加到源代码中。请看,还有。如果我们要尝试验证我们的解决方案是否适合您,那么如果我们从您的代码开始,而不必全部编写代码,那么这样做会容易得多。如果没有这样的代码,你就没有动力为自己找到答案。你可以使用Firefox插件的内容脚本访问页面内容。如果你像@Makyen所说的那样提供更多信息,我们可以帮助你。@Makyen我问了一个问题。如果你对此有任何想法,你能帮我吗。