如何链接到 chrome 扩展中的选项页面?
Posted
技术标签:
【中文标题】如何链接到 chrome 扩展中的选项页面?【英文标题】:How do you link to the options page in a chrome extension? 【发布时间】:2013-01-29 14:03:49 【问题描述】:我有一个带有 options page 的 chrome 扩展程序。选项页面可以正常工作,我可以从扩展页面访问它,但是我还希望在我的扩展弹出窗口中有一个指向它的链接。这可能吗?它似乎没有网址,但有没有办法告诉 chrome 链接到扩展选项?
【问题讨论】:
【参考方案1】:自 Chrome 42 以来的新方法:
chrome.runtime.openOptionsPage()
将打开选项,无论是使用新样式的嵌入选项还是旧样式的选项页面。
chrome.runtime.openOptionsPage()
将始终打开规范位置,并且具有很好的行为,例如重新聚焦打开的选项页面(如果有)。
【讨论】:
感谢您指出这一点!我即将遇到有关新选项样式的错误文档。 文档服务器连续 3 周没有收到文档更新(已经在代码库中)太奇怪了。我就此事联系了卡尔曼。 值得注意的是,这似乎不适用于按钮等嵌入式元素。 @BradJohnson 也许您正在尝试使用内联onclick
,这是不允许的。
我使用 document.createElement 构建了按钮并附加了点击事件监听器。没有快乐。【参考方案2】:
您可以让 Chrome 在新标签页中打开您的扩展程序的选项页面,使用如下方式:
chrome.tabs.create('url': "/options.html" )
与 HTML 很相似,URL 被认为是相对于调用页面的,但您可以使用正斜杠来加载相对于扩展程序根目录的页面。
更新:
如果你想从内容脚本打开选项页面,你必须使用这个方法: How do you open Chrome extension options page from a web page?
【讨论】:
我在 content script 中收到了Uncaught TypeError: Cannot call method 'create' of undefined
。看起来像I can't do that。除非再次编辑答案,否则我也无法投票给你。
如果您想避免将 Web 可访问资源添加到清单文件中,您可以从内容脚本向后台页面发送消息。使用消息可能更符合扩展的最初设计方式。【参考方案3】:
你可以直接在html中使用相对链接:
<a href="options.html" target="_blank">Options</a>
【讨论】:
这不起作用,特别是如果它已嵌入网页中。此时,它采用默认域并将其作为 options.html 的前缀。例如:localhost/options.html
你想要的 Chrome-extension://sfj2jngijnei2f9b2f9bbkbe/options.html
只能通过 chrome API 获得。 chrome.extension.getURL('options.html')以上是关于如何链接到 chrome 扩展中的选项页面?的主要内容,如果未能解决你的问题,请参考以下文章
如何链接到 Google Chrome 扩展程序的本地图像?