从附加SDK面板处理当前文档

问题描述 投票:0回答:1

我正在使用新的SDK编写Firefox插件,该插件可以完成5个非常简单的工作。它们大致相关,所以我希望使用一个单独的附加组件,该附加组件带有一个在面板中实现的下拉菜单。

我正在研究新的SDK文档,但是找不到直接的解决方案。我发现可以添加面板,但是在当前选项卡中看不到如何操作文档。

这是可能的,不是吗?使用全局document不能正常工作,因为它可能是指面板,或者至少不是指我正在查看的文档。

所以,如何从附加面板访问文档?

javascript firefox-addon firefox-addon-sdk
1个回答
2
投票

对该问题的简短回答是,您没有从主要的JavaScript代码访问网络内容。您可以使用Content Scripts与浏览器的选项卡中的文档(Web内容)进行交互。您可以拥有内容脚本pass messages to your main script

MDN summarizes在SDK中使用内容脚本的原理如下:

内容脚本可能是工作中比较混乱的方面之一使用SDK,但您很有可能必须使用它们。有五个基本原则:

  • 附件的主代码,包括“ main.js”和“ lib”中的其他模块,可以使用SDK的high-levellow-level API,但是无法直接访问网络内容
  • 内容脚本can't use the SDK's APIs(无法访问全局变量导出,但必须),但可以访问Web内容
  • 使用内容脚本的SDK API,例如page-modtabs,提供了使附件的主代码能够将内容脚本加载到网页中
  • 内容脚本可以作为字符串加载,但是更常见的是作为单独的文件存储在附件的“数据”目录下。下午默认情况下不会创建“数据”目录,因此您必须添加并放置您的内容脚本在那里。
  • 消息传递API允许主代码和内容脚本相互通信

由于您尚未提供关于自己正在做的事情的清晰描述,所以您不清楚该怎么做。但是,听起来几乎可以使用context-menu实现所需的功能。上下文菜单是将内容脚本附加到当前选项卡的一种方法,并且可以为您提供所需的下拉菜单感觉(尽管它是上下文菜单的一部分,而不是下拉菜单)。

© www.soinside.com 2019 - 2024. All rights reserved.