You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Manifest V3扩展:chrome.scripting.executeScript访问内部页面失败求助

解决Manifest V3中向扩展自身页面注入脚本的权限问题

问题原因

<all_urls> 权限并不包含 chrome-extension:// 协议的URL,Chrome将扩展自身的页面视为特殊内部资源,需要单独配置访问权限,这就是你收到权限错误的核心原因。

解决方案

方案1:直接在install.html中内嵌脚本(推荐)

既然install.html是扩展自身的页面,完全不需要通过Service Worker远程注入脚本,直接在页面内添加内嵌脚本或引入本地JS文件即可:

  1. 在install.html中添加脚本:
<!DOCTYPE html>
<html>
<body>
  <!-- 页面原有内容 -->
  <script>
    // 直接在这里执行创建iframe的逻辑
    const someUrl = "你的目标URL"; // 可根据需求动态传入,比如从URL参数获取
    const iframe = document.createElement('iframe');
    iframe.src = someUrl;
    document.body.append(iframe);
  </script>
</body>
</html>

这种方式无需任何额外权限,代码更简洁,也避免了跨上下文调用的问题。

方案2:修改Manifest权限允许访问自身页面

如果必须通过Service Worker注入脚本,需要在manifest.json的host_permissions中添加"self",它专门指代扩展自身的所有URL:

{
  "permissions": [
    "scripting",
    // 其他已有权限
  ],
  "host_permissions": [
    "<all_urls>",
    "self"
  ]
}

修改后,Service Worker中的chrome.scripting.executeScript就能正常访问chrome-extension://<your_extension_id>/install.html页面了。

补充说明

  • 不要手动填写具体的扩展ID到host_permissions,开发阶段和发布后的ID可能不同,"self"会自动适配当前扩展的所有内部页面。
  • 优先使用方案1,扩展自身页面的脚本直接执行更高效,也减少了权限依赖。

内容的提问来源于stack exchange,提问作者mark

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 21:25:30