我正在使用新的SDK编写一个Firefox插件,它可以完成5个非常简单的工作。它们大致相关,所以我更喜欢带有下拉菜单的单个插件,我已经在Panel中实现了。
我正在通过新的SDK文档,但无法找到直接的解决方案。我发现我可以添加一个面板,但我看不到如何在当前选项卡中操作该文档。
这是可能的,不是吗?使用全局document
不起作用,因为可能是指面板,或者至少不是我正在查看的文档。
那么,如何从插件面板访问文档?
由于
答案 0 :(得分:2)
您的问题的简短回答是您不能从主JavaScript代码访问Web内容。您使用Content Scripts在浏览器选项卡中与文档(Web内容)进行交互。您可以拥有内容脚本pass messages to your main script。
MDN summarizes使用SDK的内容脚本的原则如下:
内容脚本可能是工作中比较混乱的方面之一 使用SDK,但您很可能必须使用它们。有 五个基本原则:
- 加载项的主要代码,包括“main.js”和“lib”中的其他模块,可以使用SDK high-level和low-level API,但是 无法直接访问网页内容
- 内容脚本can't use the SDK's APIs(无法访问全局导出,需要)但可以访问网页内容
- 使用内容脚本的SDK API,如page-mod和tabs,提供了启用附加组件主代码的功能 将内容脚本加载到网页中
- 内容脚本可以作为字符串加载,但通常作为单独的文件存储在加载项的“data”目录下。 JPM 默认情况下不会创建“数据”目录,因此您必须添加并放置 你的内容脚本在那里。
- 消息传递API允许主代码和内容脚本相互通信
你究竟如何做你想做的事情还不清楚,因为你没有清楚地描述你在做什么。但是,几乎听起来你可以使用context-menu实现你想要的。上下文菜单是将内容脚本附加到当前选项卡的方法之一,可能会为您提供所需的下拉菜单(尽管它是上下文菜单的一部分,而不是下拉菜单)。