可以检测一个元素的样式是否只是浏览器的默认值而不是由样式表或内联样式设置?

Joh*_*ero 5 javascript css web-applications

我的javascript包含在X的网站中,但我对她的网站或其中包含的内容没有任何其他控制权.如果她的风格#element,我想不管它,但如果她没有,我有一个我会注入的样式表<head>.有没有办法检测她是否有样式?

检查它的高度为0或1失败,因为它有一些内容并且浏览器做出默认决定.

任何方式javascript/jquery /其他框架来告诉一个样式的CSS特异性将回答这个并且令人难以置信.

pla*_*alx 0

了解是否有意设置元素样式的一种简单但不完善的方法是检查元素style的属性是否具有值或者class元素的属性是否已设置。

http://jsfiddle.net/YbSpc/

超文本标记语言

<div id="test_unstyled"></div>
<div id="test_styled" style="background-color: red;" class="something"></div>
Run Code Online (Sandbox Code Playgroud)

JS

var unstyled = document.getElementById('test_unstyled'),
    styled = document.getElementById('test_styled');

console.log('test_unstyled is styled?', !!(unstyled.getAttribute('style') || unstyled.className));
console.log('test_styled is styled?', !!(styled.getAttribute('style') || styled.className));
Run Code Online (Sandbox Code Playgroud)

但是,此解决方案不会检测通过 CSS 选择器应用的任何样式。如果您想考虑这些,您可能必须找出浏览器应用的所有默认样式并进行检查,但这将很难维护,我不建议尝试实现此方法,除非您是愿意为此唯一目的开发和维护一个库。

API如果您要发布其他人可能使用的插件,那么实现允许插件的客户端决定是否应用插件样式可能会更容易。

您还可以始终包含样式表,并且用户将能够通过加载自定义样式表来覆盖样式。