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

创建指定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在扩展的文件目录中,路径配置正确。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 14:14:59