Javascript 如何将Firefox WebExtension选项页作为选项卡打开,与about:插件分开

Javascript 如何将Firefox WebExtension选项页作为选项卡打开,与about:插件分开,javascript,firefox,firefox-addon,firefox-addon-webextensions,Javascript,Firefox,Firefox Addon,Firefox Addon Webextensions,因此,我已经浏览了WebExtensionsAPI,但是我还没有弄清楚如何打开一个HTML页面,将其与about:addons分开以获取选项。在附加SDK中,您可以使用resource://ext-id-/path/to/file.html。我尝试过让一个目录网站可以访问,并在其中放一个HTML文件,但这似乎不起作用 有人知道我如何使用WebExtensions在自己的选项卡中打开选项HTML文件吗?打开选项卡 选项页始终位于选项卡中: 如果希望选项页始终在选项卡中打开,可以将值为true的属性

因此,我已经浏览了WebExtensionsAPI,但是我还没有弄清楚如何打开一个HTML页面,将其与
about:addons
分开以获取选项。在附加SDK中,您可以使用
resource://ext-id-/path/to/file.html
。我尝试过让一个目录网站可以访问,并在其中放一个HTML文件,但这似乎不起作用

有人知道我如何使用WebExtensions在自己的选项卡中打开选项HTML文件吗?

打开选项卡 选项页始终位于选项卡中:
如果希望选项页始终在选项卡中打开,可以将值为
true
的属性
open\u in\u tab
添加到清单中的
options\u ui
键。json:

这将导致“选项”页始终在选项卡中打开。从
about:addons
中单击扩展的“选项”和使用将在选项卡中打开选项页

感谢您提醒我这个选项

在选项卡中,当您的选项页面通常位于
关于:插件

您可以使用和打开一个新选项卡,其中包含扩展插件中所需的任何URL,包括选项页。具体而言,对于与manifest.json位于同一目录中的
options.html
文件,以下操作有效:

chrome.tabs.create({
    url: chrome.runtime.getURL('/options.html')
});
不需要可通过web访问和加载JavaScript:
您不需要将文件声明为web可访问。页面在后台上下文中运行,因此通过直接将文件包含在
标记的
src
中加载JavaScript(例如
)。这与弹出窗口的操作相同。有一个扩展,它使用与弹出窗口和选项页面相同的HTML和JavaScript。然而,它实际上并没有显示以选项卡的形式打开该页面,但可以使用上面的代码来完成

解析相对URL:
并说明:


相对URL将与扩展中的当前页面相对


注意:对于所有不同的
chrome.*
API调用,chrome和Firefox并不总是以相同的方式解析相对url。例如,对于不涉及从选项卡中的扩展插件打开页面的

,每个浏览器中的设置都不同。扩展插件中的options.html页面是我想在选项卡中打开的。“相对URL将与扩展插件中的当前页面相对。”谢谢,我错过了这一小行:质询。我怎样才能让内容脚本在上面运行呢。指定moz-extension://... 在matches数组中,会导致扩展无效。试图将脚本设置为可在web上访问并在标记内调用脚本也不起作用。@KnightYoshi,该页面未加载到内容上下文中。它位于后台页面上下文中。因此,脚本直接作为路径包含(不是
moz扩展名://
,而只是
/options.js
)与弹出页面类似。包括一个用作选项页面和弹出窗口的页面。再次感谢!我对WebExtensionsAPI很陌生,它与SDK版本大不相同。@KnightYoshi,很高兴我能提供帮助。我注意到在您的问题中我没有提到的一点:您不需要将资源声明为web可访问。我已经将我的评论中的信息添加到了答案中。还有
openOptionsPage()
方法:它的受支持程度稍低(目前),但它的功能很好,也很清楚。
chrome.tabs.create({
    url: chrome.runtime.getURL('/options.html')
});