Chrome扩展从Manifest V2迁移至V3后内容脚本失效及chrome.scripting接口报错求助
Manifest V2迁移V3过程中内容脚本失效问题
将Chrome扩展从Manifest V2迁移至Manifest V3时,遇到以下核心故障:
- 静态配置的内容脚本无法正常运行
- 动态注入的内容脚本执行失败
- 调用
chrome.scripting.registerContentScripts接口时,系统直接提示该方法不存在
复现场景
场景1:静态内容脚本失效
- 创建符合Manifest V3基础规范的Chrome扩展项目
- 在manifest配置文件中同时声明service worker入口、按V3规范书写静态内容脚本的匹配规则
- 手动加载/刷新扩展后,service worker可正常运行,但提前配置的静态内容脚本未在规则匹配的页面生效
场景2:动态内容脚本失效
- 创建符合Manifest V3基础规范的Chrome扩展项目
- 在manifest配置文件中仅声明service worker入口
- 在service worker中绑定
chrome.tabs.onUpdated事件,事件触发逻辑中调用以下两类接口完成脚本注入/注册:
// 动态执行注入逻辑 chrome.tabs.onUpdated.addListener(async function (tabId, changeInfo, tab) { chrome.scripting.executeScript({ target: {tabId: tabId} }); }) // 动态注册内容脚本逻辑 chrome.scripting.registerContentScripts(options, function(et){});
- 加载/刷新扩展后,service worker可正常响应事件,但动态注入、注册的内容脚本未生效
期望实现效果
- 完全对齐Manifest V2版本的能力:支持按匹配规则静态自动注入内容脚本、支持编程方式按需向指定页面注入脚本
- 解决当前接口缺失、脚本不生效的故障,顺利完成扩展版本迁移
运行环境
- 操作系统:Windows 10
- 浏览器版本:Chrome 89.0.4389.90(64位正式版)
内容的提问来源于stack exchange,提问作者Suneel Eduru
相关产品推荐
相关产品推荐

