javascript - window.getComputedStyle() : How to Discard properties with default values?

标签 javascript google-chrome

嗨 我正在为 Google Chrome 开发一个扩展,并使用 window.getComputedStyle() 来获取 DOM 元素的特定属性。通过这种方式,我获得了多个属性并构建了一个 CSS。我想丢弃具有默认值的属性。我怎样才能做到这一点?我如何知道属性的默认值?

最佳答案

查看 Chrome 资源让我发现: node.ownerDocument.defaultView.getMatchedCSSRules(node, '');

我用它来创建这个函数,它将只返回由 style 属性或匹配的 CSS 规则定义的样式。 getComputedStyle 中出现但此处未出现的任何内容都是默认值,但我猜这会返回您实际要查找的内容:没有默认值的样式。

// WebKit only
function getStyle(node) {
  var styles = {};
  var rules = node.ownerDocument.defaultView.getMatchedCSSRules(node, '');

  var i = rules.length;
  while (i--) {
    merge(styles, rules[i].style)
  }
  merge(styles, node.style);

  return styles;

  function merge(obj, style) {
    var i = style.length;
    while(i--) {
      var name = style[i];
      obj[name] = style.getPropertyCSSValue(name);
    }
  }
}

关于javascript - window.getComputedStyle() : How to Discard properties with default values?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4471663/

相关文章:

css - Chrome 和 Opera 的抗锯齿

javascript - chrome 扩展禁用单击关闭通知按钮时的通知声音

Javascript 书签在 Firefox 中输出 'true' 而不是执行脚本

javascript - 谷歌地图API,初始化 map 后在ajax中添加标记

javascript - 使用 Javascript 在列表中插入新项目时得到空值

css - 为 chrome 和 safari 划分 css

google-chrome - 有没有办法从代码中切换 Chrome DevTools "pause on exceptions"按钮?

javascript - 使用身份验证登录 frisby 请求 header 中的参数

javascript - 继电器 : How to merge instead of override queries in nested routes?

javascript - 谷歌浏览器扩展内容安全政策