微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

本地 URL/文件的 Chrome 扩展内容脚本匹配模式?

如何解决本地 URL/文件的 Chrome 扩展内容脚本匹配模式?

我有一个 Chrome 扩展程序,当我单击弹出页面上的按钮时,它会向后台脚本发送一条 msg。此后台脚本然后创建一个选项卡,URL 只是扩展安装中附带的 index.html 文件。 (它在扩展文件夹的根目录中)

chrome.tabs.create({ url: "index.html" },(tab) => { });

好吧,它确实使用正确的 index.html 创建了标签,但地址栏/多功能框中的 url 是:

chrome-extension://pdkkaldkelomkfiohdhcklphjclggmoh/index.html

问题是我需要为此 index.html 和官方 Chrome 文档附加一个内容脚本 https://developer.chrome.com/docs/extensions/mv3/match_patterns/ 没有匹配项:chrome-extension://

我尝试使用: 和 file:///* ,没有错误消息,但是当我在 index.html 页面时,在开发工具中我检查了 Content Scripts 选项卡,但 content.js 不是已加载。

还测试了:

"content_scripts": [
    {
      "matches": [
        "*://pdkkaldkelomkfiohdhcklphjclggmoh/index.html"
      ],"js": [
        "content.js"
      ]
    }
  ]

没有错误消息,并且带有完整路径:“chrome-extension://pdkkaldkelomkfiohdhcklphjclggmoh/index.html”刷新扩展时出现错误

Invalid value for 'content_scripts[0].matches[0]': Invalid scheme.
Could not load manifest.

它不接受匹配字符串的“chrome-extension://”部分。

我可能做错了什么,因为我确信我可以使用本地文件,该文件将作为扩展文件集的一部分安装。

任何想法请告诉我并提前致谢!

解决方法

内容脚本旨在添加到不属于您自己的扩展程序的外部页面而 index.html 属于您的扩展程序,技术含义是该 URL 在 Chrome 中以 chrome-extension://yourExtensionID/ 开头或moz-extension://yourExtensionID/ 在 FF。

所以只需在 index.html 中加载脚本:

<script src="index.js"></script>

请注意,默认情况下,扩展页面不允许内联 JS(没有 src 的脚本或 onclick 之类的属性),如果您想使用内联 JS,请参阅 this topic 了解更多信息。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。