javascript - 单击按钮时从内容脚本打开选项页面?

标签 javascript google-chrome-extension firefox-addon-webextensions content-script

我正在尝试通过页面上的内容脚本从注入(inject)的按钮打开我的网络扩展选项页面。设置如下:

list 设置:

"options_ui": {
    "page": "options/options.html",
    "open_in_tab":true
},
"web_accessible_resources": ["icons/icon.png", "icons/icon64.png","options/options.html"]

内容脚本.js:

<a href="moz-extension://1f82d05-3abf-4bea-80e2-db87e97486d3/options/options.html" target="_blank">Settings</a>

我在这里缺少什么?另外,我知道 moz-extension: 可能不是跨浏览器操作的最佳选择,但不确定正确的 namespace 应该是什么?

编辑:

我在 list 中使用固定 ID:

"applications": {
        "gecko": {
            "id": "{adacfr40-acra-e2e1-8ccb-e01fd0e08bde}"
        }
},

最佳答案

如图所示,您的内容脚本实际上是一 block HTML,而不是预期的 JavaScript。所以这是行不通的。也许这不是您的实际代码,而只是您创建的代码?

但是假设您确实调整内容脚本以添加一个按钮并附加一个监听器(我认为超出了这个问题的范围)。如何打开选项页面?

规范方法是调用 browser.runtime.openOptionsPage() ,但是 API can't be called from a content script .

两个选项:

  1. 坚持使用openOptionsPage()。在这种情况下,您需要一个监听消息的后台(事件)页面,然后 signal from the content script您希望打开选项页面。

    这种方法的优点是您不需要使选项页面可通过网络访问。

  2. 如果您坚持直接从内容脚本/a 标记打开页面,也可以,但您需要为您的扩展程序获取动态分配的 UUID实例

    选项页面的 URL 不是固定的,但应通过 browser.runtime.getURL("options.html") 获取,并且应在链接创建中使用该 URL。

    此方法需要将其声明为可通过网络访问。

关于javascript - 单击按钮时从内容脚本打开选项页面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53592552/

相关文章:

javascript - 将消息从一个监听器传递到另一个监听器

javascript - 如何在 Google Chrome 扩展中构建 HUD?

javascript - 我可以从 places.sqlite 检索网站图标吗?

javascript - 将 firefox-webextension 的按钮更改为 textString

javascript - 在 AJAX 请求中传递表单数据时出现问题

javascript - 从其他 html 文件打开模态( Bootstrap )

javascript - 向服务器发出 AJAX 请求时出现错误代码 415

Chrome 扩展中的 Javascript 二进制文件下载和 ajax 文件 POST 上传

javascript - Mozilla WebExtensions contextMenus.create 不工作

javascript数组参数列表