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

Chrome扩展Manifest V3开发declarativeContent规则不生效问题求助

问题原因
  1. 代码执行时机错误:你在addRules的actions数组里直接写了chrome.tabs.create({}),这行代码会在规则注册的时候同步执行,而非等到条件匹配后触发,所以扩展激活、规则注册完成的瞬间就会创建新标签。
  2. API使用场景错误:chrome.declarativeContent.onPageChanged仅支持传入该命名空间下预定义的声明式动作(如ShowAction、SetIcon、RequestContentScript),不支持自定义执行任意Chrome API,因此就算你修正了执行时机的问题,也无法通过这个API实现匹配站点后创建标签页的需求。
正确实现方案

你需要用chrome.tabs.onUpdated事件监听标签页状态变化,匹配到指定站点后触发自定义逻辑,具体配置如下:

1. 调整manifest.json权限配置

{
  "manifest_version": 3,
  "name": "自定义站点工具",
  "version": "1.0",
  "background": {
    "service_worker": "background.js"
  },
  "permissions": ["tabs", "cookies"],
  "host_permissions": ["https://www.google.com/*"]
}

如果后续不需要获取Cookie可以移除cookies权限。

2. 替换background.js代码

chrome.tabs.onUpdated.addListener((tabId, changeInfo, tab) => {
  // 仅在页面加载完成、URL匹配目标站点时触发,避免重复触发
  if (changeInfo.status === 'complete' && tab.url?.startsWith('https://www.google.com/')) {
    // 创建新标签页,url可替换为你自己编写的用于展示数据的本地页面
    chrome.tabs.create({ url: 'result.html' });
    
    // 后续获取Cookie、发fetch请求的逻辑可以直接写在这里
    // chrome.cookies.get({
    //   url: 'https://www.google.com',
    //   name: '需要获取的Cookie名称'
    // }, (cookie) => {
    //   处理Cookie后发起fetch请求即可,配置了host_permissions不会有跨域问题
    // })
  }
});
参考API列表
  • chrome.tabs:用于标签页的状态监听、创建、更新操作
  • chrome.cookies:用于获取指定站点的Cookie数据
  • chrome.webNavigation:如果需要更细粒度的页面导航状态监听,可以用该API替代chrome.tabs.onUpdated

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 07:15:04