Javascript Chrome扩展:无延迟地动态注入css

Javascript Chrome扩展:无延迟地动态注入css,javascript,jquery,css,performance,google-chrome-extension,Javascript,Jquery,Css,Performance,Google Chrome Extension,我知道我可以在manifest文件中插入css文件,如下所示: "matches": ["some url"], "css": ["text.css"], 但是我想用JS选择一个css文件,因为我有不同的主题。 例如,如果选择了蓝色主题,我需要加载blue.css 我知道我可以像这样注入css它: window.addEventListener("DOMContentLoaded", function() { var path = chrome.runtime.getURL("

我知道我可以在
manifest
文件中插入
css
文件,如下所示:

"matches": ["some url"],
"css": ["text.css"],
但是我想用JS选择一个
css
文件,因为我有不同的主题。 例如,如果选择了蓝色主题,我需要加载
blue.css

我知道我可以像这样注入
css
它:

window.addEventListener("DOMContentLoaded", function() {
        var path = chrome.runtime.getURL("blue.css");
        $('<link/>', {
            rel: 'stylesheet',
            type: 'text/css',
            href: path
        }).appendTo('head');

}, false);
然后,根本没有加载
blue.css


那么,我怎样才能像从清单中注入文件一样,在没有短暂延迟的情况下注入
css
文件呢。这是由于页面的构造方式。JS在CSS运行很久之后才会执行。哦,谢谢。你知道我能做什么吗?恐怕不行。正如我所提到的,当通过jsp注入CSS时,FOUC没有解决方法。我发现的唯一方法是像平常一样在头部设置“皮肤”CSS,但我是用PHP来实现的。我发现的另一种方法不是更快,而是看起来更好,那就是在加载所有内容之前放置一个“加载”覆盖,并在完成所有JS后使其消失。但这可能不可行,这取决于您的应用程序。这可以通过普通的
样式
标记来实现。为Chrome设计的时尚已经做了很多年了。看到和
var path = chrome.runtime.getURL("blue.css");
        $('<link/>', {
            rel: 'stylesheet',
            type: 'text/css',
            href: path
        }).appendTo('head');