有没有办法从browserAction
或pageAction
图标禁用/启用 CSS 内容脚本?我在谈论在一组特定的匹配页面上运行CSS内容脚本的脚本,如清单中所定义。因此,如果清单包括:
"content_scripts": [
{
"matches": [ "*://*.somewhere.com/*" ],
"css": ["somewhere.css"]
}
]
会在somewhere.css
上注入somewhere.com
。有没有办法编写可以完全启用或禁用CSS内容脚本的browserAction
或pageAction
选项弹出窗口?
我知道我可以编写一个JavaScript内容脚本来侦听这样的选项弹出窗口,然后向页面添加/减去CSS规则和/或类。但我希望在页面呈现之前插入这个CSS,据我所知,唯一的方法是使用CSS内容脚本。
但是,有没有办法从弹出窗口中完全启用或禁用扩展名 - 只有一个CSS内容脚本?我看不到这样做的方法。
答案 0 :(得分:2)
不,不幸的是,没有办法关闭manifest.json
content_script
(CSS或JavaScript)的注入。指定的代码将被注入所有匹配的URL中。
为了完全控制注射或不注射,您需要通过tabs.insertCSS()
和/或tabs.executeScript
进行注射。使用这些方法注入或不注入脚本和CSS完全在扩展中的JavaScript控制之下。当然可以使用这些方法获得使用manifest.json
content_script
条目获得的类似功能,但具有更多控制和复杂性。
根据您想要做的具体内容,更合适的方法可能是使用包含chrome.declarativeContent
操作的onPageChanged
RequestContentScript
规则。但是,有关混合的迹象表明Chrome实际上支持稳定版本。此外,它无法提供runAt
属性。因此,它可能不适合你正在做的事情。
答案 1 :(得分:0)
您无法更改"newProjectRoot": "projects"
的内容,一旦在其中指定了manifest.json
,它们就会一直被加载。
如果在注入内容脚本时需要更大的灵活性,则必须使用新的contentScripts.register() Firefox API及其Chrome polyfill来注册和取消注册脚本。
但是,API需要重新加载页面才能注入和删除CSS。您可以改用即时content_scripts
,但是如果不重新加载CSS,您仍然不能删除 CSS。
注意:请勿使用chrome.tabs.insertCSS
,因为它基本上没有使用并且不受支持,特别是breaks with CSS