提问人:paws 提问时间:10/25/2023 最后编辑:paws 更新时间:10/25/2023 访问量:56
如何在不用户单击 WebExtension v3 的情况下运行content_script
How to run a content_script without user click on WebExtension v3
问:
我是 WebExtensions 的新手,并尝试将一个名为 borderify 的最小示例从 v2 移植到 v3。
我尝试了设置 的最小步骤,但我很快发现这会破坏自动运行的内容脚本。manifest.json
manifest_version: 3
{
"manifest_version": 3,
"name": "Borderify",
"content_scripts": [
{
"matches": ["*://*.mozilla.org/*"],
"js": ["borderify.js"]
}
],
...
}
borderify.js 又名内容脚本
document.body.style.border = "5px solid red";
在 v3 上,似乎有必要手动单击浏览器 UI 中的扩展图标才能实际运行content_scripts。这似乎是一种回归——我错过了什么?
如何让内容脚本自动加载旧的 v2 方式?如果可能的话,最好避免需要权限。这种行为在 v3 中可能吗?
火狐浏览器 119.0、macOS 13.6
答:
TIL 似乎有一个新的(强制性的?)权限授予具有 v3 扩展的流程。
安装 v3 扩展后,当浏览到与其content_script匹配的域时,扩展图标将得到一个点:matches
用户必须在单独的点击中手动激活扩展程序:
我可以理解它的论点,但它仍然为非技术用户增加了烦人的摩擦。
我希望找到是否有办法避免这个额外的手动步骤,例如使用或其他一些技巧。host_permissions
是的,你是对的。显然,他们已经改变了行为。除非用户明确允许为 中的指定主机运行扩展,否则内容脚本将不会运行。host_permissions
Mozilla Developer Network 的 Content Scripts 页面上有一条注释:
注意:仅当扩展被授予域的主机权限时,才会执行内容脚本。
但是,无论授予的权限如何,都无法访问受限制的域。
从 Manifest V3 开始,安装时不会自动授予主机权限。安装扩展程序后,用户可以选择加入或退出主机权限。
评论
host_permissions
--firefox-profile=<absolute directory path>
--firefox-profile=...
--keep-profile-changes
web-ext run
browser_specific_settings.gecko.id
manifest.json
web-ext run --firefox-profile=... --keep-profile-changes
评论