如何打开Firefox web扩展选项页作为一个选项卡,从大约:插件分开

How to open a Firefox WebExtension options page as a tab, separate from about:addons

本文关键字:选项 一个 插件 扩展 web Firefox 何打开      更新时间:2023-09-26

所以,我已经通过WebExtensions API看过了,但是我还没能弄清楚如何打开一个与about:addons分开的HTML页面。在Add-on SDK中,您可以使用resource://ext-id-/path/to/file.html。我试过使一个目录网络可访问,并把一个HTML文件在那里,但这似乎没有工作。

有没有人知道我如何打开选项HTML文件在它自己的选项卡与webeextensions ?

打开选项卡

选项页总是在一个标签:
如果你想让你的选项页总是在一个选项卡中打开,你可以在你的manifest.json:

options_ui键中添加属性open_in_tabtrue的值
"options_ui" : {
  "page": "options.html",
  "open_in_tab":true
}

这将导致你的选项页总是在一个选项卡中打开。无论是点击您的扩展的"选项"从about:addons和使用runtime.openOptionsPage()将导致您的选项页在一个选项卡打开。

感谢BigBlutHat提醒我这个选项。

当你的选项页通常在about:addons内时,在一个选项卡中:
您可以使用tabs.createruntime.getURL从您想要的扩展中打开任何URL的新选项卡,包括您的选项页。特别是对于位于与清单相同目录中的options.html文件。Json ,以下工作:

chrome.tabs.create({
    url: chrome.runtime.getURL('/options.html')
});

不需要web访问和加载JavaScript:
您不需要将文件声明为web可访问的。该页面运行在后台上下文中,因此JavaScript通过直接包括<script>标签(例如<script src="/options.js">)的src中的文件来加载。这与您为弹出窗口所做的相同。这个答案有一个扩展,它使用相同的HTML和JavaScript作为弹出窗口和选项页面。但是,它实际上并没有显示以选项卡的形式打开该页,但是可以用上面的代码来完成。

解析相对url:
Chrome和Firefox的状态都是:

相对url将相对于扩展内的当前页面。

注意:对于所有不同的chrome.* API调用,Chrome和Firefox并不总是以相同的方式解析相对url。例如,chrome.executeScript()在每个浏览器中是不同的。