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

如何在MV3扩展中运行GitHub仓库中的JavaScript?

解决Chrome MV3扩展加载远程JavaScript的方案(针对Mod Tamer)

针对你开发Mod Tamer(面向Taming.IO的mod商店)时遇到的Chrome MV3无法加载远程JavaScript的问题,以下是几个可行的解决方案:

方案1:动态下载+安全校验后注入页面上下文

MV3禁止扩展直接加载远程脚本,但可以通过先下载脚本文本,再注入到网页本身的上下文执行的方式绕开限制——网页的CSP通常允许动态脚本执行,不受扩展自身的CSP约束:

  • 具体步骤:
    1. 在扩展的content script中,用fetch从你的仓库下载mod脚本的文本内容。
    2. 对下载的脚本做哈希校验(提前在扩展内置每个mod的合法哈希值),确保脚本未被篡改。
    3. 创建一个<script>标签,把下载的脚本文本赋值给textContent,再插入到网页的<head>或<body>中。
  • 注意事项:
    • 必须做哈希校验,否则不仅有安全风险,还可能违反Chrome Web Store的审核规则。
    • 绝对不要在扩展自身的上下文(比如content script、service worker)里用eval执行远程代码,MV3默认禁止unsafe-eval,强行开启会导致审核不通过。

方案2:仿Tampermonkey的用户脚本管理模式

让用户主动导入/安装mod脚本,扩展仅负责存储和注入执行:

  • 具体步骤:
    1. 扩展提供管理界面,支持用户上传本地mod脚本,或者手动输入脚本的仓库地址触发下载(必须由用户主动操作)。
    2. 将用户选择的脚本存储到chrome.storage.local或chrome.storage.sync中。
    3. 在Taming.IO页面加载时,从存储中读取脚本内容,注入到页面上下文执行。
  • 优势:完全符合MV3的规则,因为脚本是用户主动提供的,不属于扩展远程加载的代码,Chrome Web Store审核更容易通过。
  • 缺点:用户操作成本略高,无法自动推送新mod,需要用户手动更新或安装。

方案3:内置mod并通过扩展更新推送

把所有mod脚本打包到扩展安装包中,每次更新mod时发布新的扩展版本:

  • 具体步骤:
    1. 将mod脚本放到扩展的assets目录下,在manifest.json中声明为可访问资源。
    2. 当有新mod上线时,更新扩展代码,提交新版本到Chrome Web Store。
    3. 用户通过扩展的自动更新机制获取新mod。
  • 优势:最合规,无安全风险,审核通过率极高。
  • 缺点:用户无法即时获取新mod,必须等待扩展更新;扩展包体积会随着mod数量增加而变大。

额外建议

  • 优先考虑方案2,既合规又能满足mod商店的核心需求,用户主动安装的模式也更贴合Chrome的安全理念。
  • 如果选择方案1,一定要做好安全校验,并且在扩展描述中明确说明mod的来源和校验机制,避免审核被拒。
  • 不要尝试用chrome.scripting.executeScript加载远程URL,MV3明确禁止这种用法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 13:55:03