创建指定URL新标签页并注入脚本时遇chrome.tabs.executeScript未定义错误
问题描述
创建指定URL的新标签页并向其中注入脚本,使用的background.js代码如下:
chrome.tabs.create({ url: "https://sample-page/" }, function(tab) { const tabId = tab.id; // 向新创建的标签页注入脚本 chrome.tabs.executeScript(tabId, { file: "subContent.js" }); });
运行后出现错误:
Error handling response: TypeError: chrome.tabs.executeScript is not a function
解决方法
这个错误的核心原因是Chrome Manifest V3 已废弃chrome.tabs.executeScript API,替代方案是使用chrome.scripting.executeScript,具体操作如下:
更新manifest.json权限配置
必须在manifest.json中添加scripting权限,同时将目标站点加入host_permissions:{ "manifest_version": 3, "permissions": ["scripting"], "host_permissions": ["https://sample-page/*"], // 其他扩展配置项... }修改background.js的注入逻辑
替换旧API为新的scripting.executeScript,同时建议等待标签页加载完成后再注入,避免时机过早导致失败:chrome.tabs.create({ url: "https://sample-page/" }, function(tab) { const tabId = tab.id; // 监听标签页加载状态,完成后注入脚本 chrome.tabs.onUpdated.addListener(function listener(updatedTabId, info) { if (updatedTabId === tabId && info.status === 'complete') { chrome.scripting.executeScript({ target: { tabId: tabId }, files: ["subContent.js"] }); // 移除监听器,防止重复触发 chrome.tabs.onUpdated.removeListener(listener); } }); });额外注意
- 如果你的扩展仍在使用Manifest V2,
chrome.tabs.executeScript暂时可用,但建议尽快升级到V3——Chrome已逐步停止对V2扩展的支持。 - 确认
subContent.js在扩展的文件目录中,路径配置正确。
- 如果你的扩展仍在使用Manifest V2,
内容的提问来源于stack exchange,提问作者atom mota
相关产品推荐
相关产品推荐

