我正在尝试通过页面上的内容脚本从注入(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 .
两个选项:
坚持使用
openOptionsPage()
。在这种情况下,您需要一个监听消息的后台(事件)页面,然后 signal from the content script您希望打开选项页面。这种方法的优点是您不需要使选项页面可通过网络访问。
如果您坚持直接从内容脚本/
a
标记打开页面,也可以,但您需要为您的扩展程序获取动态分配的 UUID实例。选项页面的 URL 不是固定的,但应通过
browser.runtime.getURL("options.html")
获取,并且应在链接创建中使用该 URL。此方法需要将其声明为可通过网络访问。
关于javascript - 单击按钮时从内容脚本打开选项页面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53592552/