Manifest V3版Chrome扩展跳转外部网站时executeScript报错如何解决?
问题排查与修复方案
核心错误点
- Manifest V3 已废弃
chrome.tabs.executeScript接口,需使用官方替代接口chrome.scripting.executeScript - 调用脚本注入接口时未指定目标标签ID,接口无法识别需要注入脚本的目标页面
- 缺少对应权限声明,脚本注入能力需要在manifest.json中提前配置权限
代码修复
background.js调整
chrome.runtime.onInstalled.addListener(async () => { const initialUrl = "https://www.globalflyerdistribution.com/"; const targetUrl = "你需要跳转的目标URL"; const tab = await chrome.tabs.create({ url: initialUrl }); // 方案1:若确实需要注入脚本执行跳转逻辑 await chrome.scripting.executeScript({ target: { tabId: tab.id }, func: () => location.href = targetUrl }); // 方案2:仅需跳转的更优方案,无需注入脚本,无需额外scripting权限 // await chrome.tabs.update(tab.id, { url: targetUrl }); console.log(`Created tab ${tab.id}`); });
manifest.json权限补充
如果你使用方案1的脚本注入方案,需要在manifest.json中新增以下配置:
{ "permissions": ["scripting"], "host_permissions": [ "https://www.globalflyerdistribution.com/*", "*://你的跳转目标域名/*" ] }
如果使用方案2的直接更新标签地址方案,仅需要配置对应域名的host_permissions即可,无需申请scripting权限。
内容的提问来源于stack exchange,提问作者Bruce Chamoff
相关产品推荐
相关产品推荐

