有什么方法可以从 browserAction
或
pageAction
图标禁用/启用 CSS内容脚本吗?我说的是在一组特定的匹配页面上运行 CSS 内容脚本的脚本(如清单中所定义)。因此,如果清单包括:
"content_scripts": [
{
"matches": [ "*://*.somewhere.com/*" ],
"css": ["somewhere.css"]
}
]
这会将
somewhere.css
注入到 somewhere.com
上。有没有办法编写一个 browserAction
或 pageAction
选项弹出窗口来完全启用或禁用 CSS 内容脚本?
我知道我可以编写一个 JavaScript 内容脚本来侦听此类选项弹出窗口,然后向页面添加/删除 CSS 规则和/或类。但我希望在页面呈现之前插入此 CSS,据我所知,唯一的方法是使用 CSS 内容脚本。
但是,有没有办法从弹出窗口完全启用或禁用仅具有 CSS 内容脚本的扩展程序?我看不出有什么办法可以做到这一点。
manifest.json
content_script
(CSS 或 JavaScript)的注入。 指定的代码将被注入到所有匹配的 URL 中。为了完全控制注射或不注射,您需要通过 和/或
tabs.executeScript
执行注射。使用这些方法注入或不注入脚本和 CSS 完全由扩展中的 JavaScript 控制。使用这些方法当然可以获得与使用 manifest.json
content_script
条目获得的类似功能,但具有更多控制和复杂性。具体取决于您想要做什么,更合适的实现方法可能是使用
onPageChanged
规则,其中包括 RequestContentScript
操作。然而,有迹象表明 Chrome 的稳定版本实际上支持这一点。此外,它没有能力提供 runAt
属性。因此,它可能不适合您正在做的事情。
manifest.json
的内容,一旦您在其中指定了
content_scripts
,它们将始终被加载。如果您在注入内容脚本时需要更大的灵活性,则必须使用新的
scripting.registerContentScripts() 来注册和取消注册脚本。
但是,API 需要重新加载页面才能注入和删除 CSS。您可以使用即时chrome.tabs.insertCSS
来代替,但您仍然无法在不重新加载的情况下remove CSS。
不要使用chrome.declarativeContent
,因为它基本上未使用且不受支持,并且它特别破坏了CSS