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

如何让Chrome扩展在所有网站始终启用?已尝试代码未生效

解决Chrome扩展在所有网站始终启用的问题

嘿,我来帮你搞定这个问题!你的代码没生效的核心原因是**urlContains: '*'的用法错误**——这里的*会被当作字面意义的星号字符来匹配,也就是说只有网址里实际包含*的页面才会触发规则,这显然不是你想要的“所有网站”效果。

下面给你两种可行的解决方案,按需选择:

方案一:直接在Manifest中配置(最简单)

如果你的需求只是让扩展的页面动作在所有网站显示,完全不需要写JS代码,直接在manifest.json里配置即可:

Manifest V3 示例:

{
  "manifest_version": 3,
  "name": "你的扩展名称",
  "version": "1.0",
  "action": {
    "default_icon": "icon.png",
    "default_popup": "popup.html"
  },
  "host_permissions": ["<all_urls>"]
}

注:Manifest V3中page_action和browser_action合并成了action,只要声明host_permissions: ["<all_urls>"],扩展就能在所有页面生效。

Manifest V2 示例:

{
  "manifest_version": 2,
  "name": "你的扩展名称",
  "version": "1.0",
  "page_action": {
    "default_icon": "icon.png",
    "show_matches": ["<all_urls>"]
  },
  "permissions": ["<all_urls>"]
}

方案二:使用declarativeContent API(适合复杂逻辑)

如果你确实需要用代码动态控制显示规则,修正后的代码应该这样写:

Manifest V3(Service Worker 中)

// background.js(作为service worker)
chrome.runtime.onInstalled.addListener(() => {
  // 先移除旧规则,避免重复添加
  chrome.declarativeContent.onPageChanged.removeRules(undefined, () => {
    // 添加匹配所有常见协议页面的规则
    chrome.declarativeContent.onPageChanged.addRules([{
      conditions: [
        new chrome.declarativeContent.PageStateMatcher({
          pageUrl: { schemes: ["http", "https", "file", "ftp"] }
        })
      ],
      actions: [new chrome.declarativeContent.ShowAction()]
    }]);
  });
});

同时确保manifest.json中声明必要权限:

{
  "manifest_version": 3,
  // ...其他配置
  "permissions": ["declarativeContent"],
  "background": {
    "service_worker": "background.js"
  }
}

Manifest V2(背景页面中)

// background.js
chrome.runtime.onInstalled.addListener(() => {
  chrome.declarativeContent.onPageChanged.removeRules(undefined, () => {
    chrome.declarativeContent.onPageChanged.addRules([{
      conditions: [
        new chrome.declarativeContent.PageStateMatcher({
          pageUrl: { schemes: ["http", "https", "file", "ftp"] }
        })
      ],
      actions: [new chrome.declarativeContent.ShowPageAction()]
    }]);
  });
});

Manifest配置:

{
  "manifest_version": 2,
  // ...其他配置
  "permissions": ["declarativeContent"],
  "background": {
    "scripts": ["background.js"]
  }
}

额外注意事项

  • 测试前记得重新加载扩展,并且刷新目标页面;
  • 如果扩展需要和页面交互,还要确保声明对应的host_permissions(V3)或permissions(V2);
  • 避免重复调用addRules,最好把规则初始化放在chrome.runtime.onInstalled事件中,只在安装/更新时执行一次。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 03:41:28