javascript - 如何将 Firefox WebExtension 选项页面作为选项卡打开,与大约 :addons 分开

标签 javascript firefox firefox-addon firefox-addon-webextensions

所以,我查看了 WebExtensions API,但我一直无法弄清楚如何打开与 about:addons 分开的 HTML 页面以获取选项。在附加 SDK 中,您可以拥有 resource://ext-id-/path/to/file.html。我试过制作一个可通过网络访问的目录并在其中放置一个 HTML 文件,但这似乎不起作用。

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

最佳答案

打开标签页

选项页面总是在标签中:
如果您希望您的选项页面始终在选项卡中打开,您可以添加属性 open_in_tab值为 trueoptions_ui在您的 manifest.json 中键入:

"options_ui" : {
  "page": "options.html",
  "open_in_tab":true
}

这将导致您的选项页面始终在选项卡中打开。两者都从 about:addons 中单击您的扩展程序的“选项”并使用 runtime.openOptionsPage() 将导致您的选项页面在选项卡中打开。

感谢BigBlutHat提醒我这个选项。

在选项卡中,通常您的选项页面在 about:addons 内:
您可以使用您想要的扩展程序中的任何 URL 打开一个新选项卡,包括您的选项页面,使用 tabs.create runtime.getURL .专为 options.html文件位于与您的 manifest.json 相同的目录中,以下工作:

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

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

解析相对 URL:
两者 ChromeFirefox状态:

Relative URLs will be relative to the current page within the extension.

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

关于javascript - 如何将 Firefox WebExtension 选项页面作为选项卡打开,与大约 :addons 分开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40519074/

相关文章:

javascript - 如何获取网页中元素的x,y坐标?

html - 如何 'hide' :first-line for white-space:pre-line in FIREFOX browser

html - 没有当前目录的相对路径

javascript - FireFox 和 Chrome 中的 Lync 状态

javascript - 使 Firefox addon-sdk 处理多个选项卡

带有标记表达式的 Javascript RegExp

javascript - 继承命名空间javascript

javascript - 在 "Actions must be plain objects. Use custom middleware for async actions."中使用 Jest 模拟结果

javascript - Firefox 扩展如何检测加载页面的内容类型?

firefox - 使用 Firefox 插件下载文件