我正在寻找比较两个 Elements 以找到它们计算样式的所有差异。为了做到这一点,我遍历了A的所有样式,并通过执行以下操作将它们与B进行比较:
var stylesA = window.getComputedStyle(a),
stylesB = window.getComputedStyle(b),
length = stylesA.length,
i, style;
for(i = 0; i < length; i++) {
style = stylesA[i];
if(stylesA[style] != stylesB[style]) {
// Respond appropriately
}
}
我这样做的前提是 A 的长度总是B 的长度,但我纯粹是通过观察得出的。尽管不同浏览器的长度不同(考虑到新属性、供应商前缀版本等),但值似乎总是相同的:
var elms = document.querySelectorAll("*"),
length = elms.length, i;
for(i = 0; i < length; i++) {
console.log(window.getComputedStyle(elms[i]).length);
}
当应用于随机 MDN 页面时,为所有元素生成以下内容:
Chrome 35 253
Firefox 30 211
IE11 317
现在,显然这不是所有浏览器的详尽列表,这让我回到我的问题,这些值对于某些元素是否会有所不同?在查看DOM Level 2文档和关于.getComputedStyle()
特别是,我会假设 和 之类的样式list-style-type
应该content
只适用于某些元素,只有在适用时才会出现在列表中。然而,无论如何,两者似乎都存在。
是否有某个文件可以验证我的断言?