好的,所以我想制作一个“深色模式”插件,但问题是我无法足够快地应用深色 CSS。当我重新加载网页时,它会以白色背景加载 1/2 秒,然后加载我的深色 CSS。这不是问题,但是在晚上我的显示器在每次重新加载页面时都会闪烁(这不是很好的用户体验)。这是我到目前为止所拥有的:清单(脚本加载部分):
"permissions": [
"activeTab",
"storage",
"https://www.example.com/*"
],
"content_scripts": [
{
"js": [ "jquery.min.js", "content.js" ],
"matches": [ "https://www.example.com/*"],
"run_at": "document_start"
},
{
"css": ["style.css"],
"matches": [ "https://www.example.com/*"]
}
],
"background": {
"scripts": ["background.js"],
"persistent": false
},
这是 content.js
chrome.storage.sync.get({
dark: true
}, function(items) {
init(items.dark);
});
function init(options) {
var dark = options;
if(dark){
$( "body" ).addClass( "darkmode" );
if (document.readyState == 'loading') {
$( "body" ).addClass( "darkmode" );
document.addEventListener('DOMContentLoaded', function(){
$( "body" ).addClass( "darkmode" );
});
}
}
}
你看这里我在每个页面加载阶段都添加了“addClass”,只是为了确定。第一个工作正常,但问题是有时该行代码不会执行,因为 DOM 加载速度不够快。
在 style.css 文件中,我正在使用 css 更改样式,如下所示:
.darkmode .somediv .etc a {
color:#fff;
}
我只需要在页面加载后立即将网站的背景更改为黑色,这样一开始我就没有那个白色的闪光。其余的 CSS 可以在 1/2 秒后加载,没关系。