如何在浏览器扩展中插入带有用户源的CSS?

如何在浏览器扩展中插入带有用户源的CSS?,css,google-chrome-extension,css-cascade,Css,Google Chrome Extension,Css Cascade,我有一个非常简单的扩展: { “清单版本”:2, “名称”:“用户样式表解决方案”, “版本”:“1”, “内容脚本”:[ { “匹配项”:[”。如何执行此操作?在后台脚本的URL更改事件中与cssOrigin:'user'一起使用 例如,chrome.webNavigation.onCommitted(需要webNavigation权限)或chrome.tabs.onUpdated(不需要任何特殊权限) 应将允许CSS注入的目标站点添加到权限 manifest.json: { “清单版本”:2

我有一个非常简单的扩展:

{
“清单版本”:2,
“名称”:“用户样式表解决方案”,
“版本”:“1”,
“内容脚本”:[
{
“匹配项”:[”。如何执行此操作?

在后台脚本的URL更改事件中与
cssOrigin:'user'
一起使用

例如,chrome.webNavigation.onCommitted(需要
webNavigation
权限)或chrome.tabs.onUpdated(不需要任何特殊权限)

应将允许CSS注入的目标站点添加到
权限

manifest.json:

{
“清单版本”:2,
“名称”:“用户样式表解决方案”,
“版本”:“1”,
“背景”:{
“脚本”:[“bg.js”]
},
“权限”:[“”]
}
bg.js:

chrome.tabs.onUpdate.addListener((tabId,info)=>{
如果(info.status===“正在加载”){
chrome.tabs.insertCSS(tabId{
文件:“style.css”,
cssOrigin:“用户”,
runAt:“文档开始”,
//所有帧:对,
//matchAboutBlank:是的,
},()=>chrome.runtime.lastError);//忽略错误
}
});

将chrome.tabs.insertCSS与cssOrigin一起使用,例如,chrome.webNavigation.onCommitted的侦听器中的后台脚本中的“user”。@wOxxOm您可以发布一个示例吗?在这种情况下,我还需要“tabs”权限,对吗?有没有不需要任何权限就可以这样做的方法?我认为“正确的”“way是您的第一个建议。
选项卡。OnUpdate
在每个导航中被调用多次,但
webNavigation.onCommitted
仅被调用一次。另外
webNavigation.onCommitted
可以接受筛选器,以便我可以更有效地告诉它仅在“http”和“https”方案上运行(当我打开一个新选项卡时抛出了一个错误,因为它也试图在新选项卡上运行)因此,就我所知,这是最好的方法,你认为呢?当然,网络导航是一种更干净的方法。一个问题是,即使在使用
runAt:'document\u start'
,在注入我的样式表之前,网站的样式仍然有一个非常短的闪光。使用
内容脚本时根本没有闪光。你认为呢知道如何摆脱此flash吗?我想我需要更快地注入样式表,但不确定它是否也能解决此问题。尝试对文件内容使用
code
,而不是
file
参数。没有区别,而且我没有忘记重新加载扩展名。我想我必须设法尽早注入它呃,或者干脆接受它。