在非我的页面上重新加载CSS

Reloading CSS on not my page

本文关键字:加载 CSS 新加载 我的 非我      更新时间:2023-09-26

我正试图在JS中制作某种工具栏作为GreaseMonkey脚本,我需要高对比度选项。它们已经在几个页面上实现了,但我会把它们应用到我访问的任何网站上。我有应用高对比度的按钮,它们工作得很好,但我不知道如何恢复默认CSS。当我知道DOM树结构、类、id等时,我发现的每一个解决方案在我自己的页面上使用都很好,但正如我所说,它应该在任何页面上都有效。

我用来做对比的是:

    var OA_whiteBlack_f = function(){
    $("*").not("video").not("object").not("embed").css("cssText", "background: #000 !important; color: #fff !important;");
    };

正如你所看到的,我添加了一些。不是为了避免更换玩家(在youtube上仍然不起作用)

有什么想法可以在页面加载时恢复样式表计算吗?

返回样式的问题是,如果在这些元素中的任何一个元素上有任何现有的内联样式,则需要首先存储它,这可以使用data() 来完成

注意,cssText删除了任何现有的内联样式,这些样式可能会在某些页面中出现问题

var $elements = $("*").not("video,object,embed").each(function () {
    var $el = $(this),
        currStyle = $el.attr('style') || '';
    $el.data('stored_style', currStyle ).css("cssText", "background: #000 !important; color: #fff !important;");
});

要撤消。。。在所有元素上循环,并用存储值替换样式属性

$elements.each(function () {
    var $el = $(this);
    $el.attr('style', $el.data('stored_style'));
});