在我的 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 模式匹配是否被破坏了?