javascript - 在页面完全呈现之前将 CSS 样式从 chrome 扩展应用到页面 'instantly'

标签 javascript html css browser google-chrome-extension

我是制作 chrome(甚至浏览器)扩展的新手,我正在尝试制作一个将一些自定义 CSS 规则应用于某些页面元素的扩展。它似乎按预期工作一般,有一些轻微的烦恼。

即,当我使用 JS 应用任何 CSS 样式规则时,页面在浏览器中完全呈现到应用我的扩展的 CSS 规则之间似乎存在延迟。

我发现解决这个问题的一种方法是将我想要立即应用的 CSS 文件添加到 list 文件中,在 content_scripts 下。 ,像这样:

"content_scripts": [
    {
      "run_at": "document_start",
      "all_frames": true,
      "matches": ["<all_urls>"],
      "js": ["filter.js"],
      "css": ["filter.css"]
    }
   ],

但现在的问题是,我想在应用之前检查用户是否在我的扩展程序的弹出窗口中按下了“启用”按钮。为此,请在 filter.js和后台脚本,我检查 chrome 存储等以查看用户是否将启用标志设置为 true。

然后我使用 chrome.tabs.insertCSS插入我的 CSS 文件的方法。

在用户按下扩展禁用的情况下,浏览器仍会以 filter.css 的效果呈现页面直到它运行 JS 来移除效果。发生这种情况时,用户已经看到了 filter.css 的效果。我不想要。

我想要的是浏览器在页面显示给用户之前立即应用或不应用我的样式(取决于用户是否启用/禁用)。

到目前为止注入(inject) CSS 的方法都导致了延迟。必须可以立即添加或删除 CSS,因为我使用了诸如 Dark Reader 之类的扩展,它们似乎能够立即应用它们的样式,而无需在没有 CSS 的情况下显示浏览器内容。

理想情况下,有一种方法可以在 list 中进行条件检查,但我知道这是不可能的。我还可以做些什么?

任何帮助,将不胜感激!

谢谢阅读!

最佳答案

终于设法解决了我的问题。问题不在于插入 CSS 的任何函数,而只是我正在运行代码以在 window.onload 函数中注入(inject) CSS。 :facepalm:

关于javascript - 在页面完全呈现之前将 CSS 样式从 chrome 扩展应用到页面 'instantly',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62311415/

相关文章:

javascript - someObject.$() 含义

javascript - onclick JS在ie8/9下不执行的问题

css - 将 CSS 应用于图像标记以仅显示下半部分

javascript - 响应式将 1st Div 移动到 2nd Div

javascript - 是否有用于文本字段的 jQuery 自动增长插件?

javascript - 关闭应用程序后 React Native 进度条百分比不保持不变

html - CSS 下拉选择

javascript - 在新窗口中打开本地 html 文件

javascript - 带有文本标签 : How do I keep the hover color even when over text label? 的按钮

javascript - 在主页上将类添加到正文