我如何使用JavaScript来检查CSS属性在chrome中是否具有!important?

问题描述 投票:1回答:2

现在是2020,我的目标是仅镀铬。我只想在chrome上检查它,所以不是同一问题。我的最终目标是避免无限观察循环。这是我的代码:

.bg-gray-light {
    background-color: #fafbfc!important;
}
var e=document.querySelector('div.pagehead.bg-gray-light');
var z= e.style.getPropertyPriority('background-color'); // here is ''
var t=getComputedStyle(e).getPropertyPriority('background-color'); //here is '' too.

所以如何判断背景色是否为'!important'。

仅供参考,我想观察样式更改,然后再更改样式,但是,如果它很重要,我需要通过e.style.setProperty()强制更改。为了避免无限观察循环,我不能只是尝试更改样式。所以我需要知道背景色是否为'!important'。

javascript css google-chrome dom cssom
2个回答
2
投票

恐怕getPropertyPriority方法仅适用于样式表规则。浏览器渲染了dom之后,很难找到哪个规则更改了特定元素。 dom中的元素与CSS规则之间的联系消失了(我认为)。

var declaration = document.styleSheets[0].cssRules[0].style;
var priority = declaration.getPropertyPriority("background-color");

参见:MDN getPropertyPriority


0
投票

谢谢@dandavis,我改变了主意。我放弃检查“!important”,我只是尝试更改样式,但避免无限观察,就像这样:

observer.disconnect();
            e.style.setProperty(
                property,
                rgbstring,
                priority, //'important' or ''
            );
regist(observer,document);

感谢@dandavis

© www.soinside.com 2019 - 2024. All rights reserved.