chrome扩展程序在加载dom之前注入动态css

凯蒂

我正在构建一个chrome扩展程序,并且storage.sync.get当用户访问该网页时,我想向该网页中注入动态css。在我当前的实现中,从技术上讲,它可以正常工作,但是页面会加载,并且在页面加载后会注入新的CSS,这使它看起来真的很慢。我想在加载dom之前先加载css。那可能吗?

这是我目前的情况:

inject.js:

chrome.storage.sync.get("color", function(storedTheme) {
     $('.theme-wrap').removeClass('selected');
     $('.' + storedTheme.color).addClass('selected');
     path = chrome.extension.getURL("src/options/themes/" + storedTheme.color + ".css");
      $('<link/>', {
      rel: 'stylesheet',
      type: 'text/css',
      href: path
    }).appendTo('head');
});

这是我的manifest.json content_script信息:

"content_scripts": [{
    "matches": ["http://*/*", "https://*/*"],
    "css": ["src/inject/inject.css", "src/inject/font-awesome.min.css"],
    "js": ["js/jquery/jquery.min.js", "src/inject/inject.js"],
    "run_at" : "document_end"
 }]

src/inject/inject.css似乎DOM,这正是我想要的东西之前加载,但我希望它为用户指定的css文件的工作。有人知道我该怎么做吗?谢谢

海原爱

您已经"run_at": "document_end"在中定义manifest.json,这意味着inject.css在DOM完成后立即但在加载诸如图像和框架之类的子资源之前注入

看一下run_at,您可以设置"run_at": "document_start",这意味着这些文件是在css中的任何文件之后,但在构造任何其他DOM或运行任何其他脚本之前注入的但是,在这种情况下,如果异步方法(chrome.storage.sync.get)执行得足够快,则由于未构建DOM,因此无法获得正确的正确结果。

我建议您inject.css在构建DOM之前先注入,然后侦听DOMContentLoaded事件以执行您的inject.js逻辑。

当初始HTML文档已完全加载和解析而没有等待样式表,图像和子帧完成加载时,将触发DOMContentLoaded事件。

manifest.json

"content_scripts": [{
    "matches": ["http://*/*", "https://*/*"],
    "css": ["src/inject/inject.css", "src/inject/font-awesome.min.css"],
    "js": ["js/jquery/jquery.min.js", "src/inject/inject.js"],
    "run_at" : "document_start"
 }]

inject.js

window.addEventListener("DOMContentLoaded", function() {
    chrome.storage.sync.get("color", function(storedTheme) {
        $('.theme-wrap').removeClass('selected');
        $('.' + storedTheme.color).addClass('selected');
        path = chrome.runtime.getURL("src/options/themes/" + storedTheme.color + ".css");
        $('<link/>', {
            rel: 'stylesheet',
            type: 'text/css',
            href: path
        }).appendTo('head');
    });
}, false);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Chrome扩展程序:在页面加载之前注入JS

来自分类Dev

Chrome扩展程序不注入CSS

来自分类Dev

Chrome扩展程序从DOM获取CSS值

来自分类Dev

动态地注入内容脚本 - Chrome扩展程序

来自分类Dev

Chrome扩展程序注入iframe

来自分类Dev

Chrome扩展程序将jQuery注入iframe

来自分类Dev

Chrome扩展程序注入脚本获取错误

来自分类Dev

Chrome扩展程序注入当前标签页

来自分类Dev

Chrome扩展程序注入脚本获取错误

来自分类Dev

如何使用Chrome扩展程序在页面加载之前隐藏所有内容

来自分类Dev

Chrome扩展程序:在页面呈现/加载之前获取页面的html

来自分类Dev

Chrome扩展程序:在页面呈现/加载之前获取页面的html

来自分类Dev

Chrome扩展程序:根据localStorage中的Option注入不同的CSS文件

来自分类Dev

Chrome 扩展程序的浏览器操作,带有注入/删除 CSS 的弹出窗口

来自分类Dev

在页面完全呈现之前,立即将Chrome扩展程序中的CSS样式应用于页面

来自分类Dev

使用Chrome扩展程序更改DOM内容

来自分类Dev

从 DOM 对象获取文本。Chrome 扩展程序

来自分类Dev

Chrome扩展程序:内容脚本注入时如何解决“不允许加载本地资源”错误

来自分类Dev

如何自动重新加载chrome扩展程序?

来自分类Dev

Chrome扩展程序错误加载jQuery

来自分类Dev

Chrome-扩展程序加载时崩溃

来自分类Dev

图像未在chrome扩展程序中加载

来自分类Dev

Chrome扩展程序错误加载jQuery

来自分类Dev

如何自动重新加载chrome扩展程序?

来自分类Dev

Chrome扩展程序-脚本加载事件?

来自分类Dev

Chrome扩展程序在加载前暂停

来自分类Dev

Chrome Webview应用程序以加载扩展

来自分类Dev

Chrome扩展程序未加载EventListener

来自分类Dev

Chrome扩展程序开发Instagram加载事件

Related 相关文章

  1. 1

    Chrome扩展程序:在页面加载之前注入JS

  2. 2

    Chrome扩展程序不注入CSS

  3. 3

    Chrome扩展程序从DOM获取CSS值

  4. 4

    动态地注入内容脚本 - Chrome扩展程序

  5. 5

    Chrome扩展程序注入iframe

  6. 6

    Chrome扩展程序将jQuery注入iframe

  7. 7

    Chrome扩展程序注入脚本获取错误

  8. 8

    Chrome扩展程序注入当前标签页

  9. 9

    Chrome扩展程序注入脚本获取错误

  10. 10

    如何使用Chrome扩展程序在页面加载之前隐藏所有内容

  11. 11

    Chrome扩展程序:在页面呈现/加载之前获取页面的html

  12. 12

    Chrome扩展程序:在页面呈现/加载之前获取页面的html

  13. 13

    Chrome扩展程序:根据localStorage中的Option注入不同的CSS文件

  14. 14

    Chrome 扩展程序的浏览器操作,带有注入/删除 CSS 的弹出窗口

  15. 15

    在页面完全呈现之前,立即将Chrome扩展程序中的CSS样式应用于页面

  16. 16

    使用Chrome扩展程序更改DOM内容

  17. 17

    从 DOM 对象获取文本。Chrome 扩展程序

  18. 18

    Chrome扩展程序:内容脚本注入时如何解决“不允许加载本地资源”错误

  19. 19

    如何自动重新加载chrome扩展程序?

  20. 20

    Chrome扩展程序错误加载jQuery

  21. 21

    Chrome-扩展程序加载时崩溃

  22. 22

    图像未在chrome扩展程序中加载

  23. 23

    Chrome扩展程序错误加载jQuery

  24. 24

    如何自动重新加载chrome扩展程序?

  25. 25

    Chrome扩展程序-脚本加载事件?

  26. 26

    Chrome扩展程序在加载前暂停

  27. 27

    Chrome Webview应用程序以加载扩展

  28. 28

    Chrome扩展程序未加载EventListener

  29. 29

    Chrome扩展程序开发Instagram加载事件

热门标签

归档