1

在我的 Google Chrome 扩展程序中,我使用manifest.json加载内容脚本,如下所示:

  "content_scripts": [
    {
      "matches": ["https://stackoverflow.com/questions/tagged/*sort=newest*"],
      "css":     ["content.css"],
      "js":      ["content.js"]
    }
  ]

当我现在浏览到https://stackoverflow.com/questions/tagged/sql?sort=newest&pageSize=15时,content.js已成功注入,但content.css只是被忽略了。

但是当我将匹配模式更改为 justhttps://stackoverflow.com/questions/tagged/*时,两者都被正确加载和应用。

这是 Chrome 中的错误还是不允许在 URL 中使用多个星号?但是为什么它对 JS 有效呢?匹配模式文档明确允许在 URL 的路径部分使用“<any chars>” 。除了手动将 CSS 样式注入页面之外,任何想法如何使其工作?

我也试过没有成功:

  • 添加"permissions":["tab", "https://stackoverflow.com/"]到清单
  • 添加"web_accessible_resources": ["content.css"]到清单
  • 将内容脚本声明分为 JS 和 CSS 的两个对象

编辑:

情况越来越糟糕。我刚刚找到了 include_globs 并尝试了这个:

  "content_scripts": [
    {
      "matches":       ["https://stackoverflow.com/*"],
      "include_globs": ["*/questions/tagged/*sort=newest*"]
      "css":           ["content.css"],
      "js":            ["content.js"]
    }
  ]

JS 只被注入到最新的问题页面中,这是应该的,但 CSS 现在被应用于整个 stackoverflow 站点。CSS 模式匹配是否被破坏了?

4

0 回答 0