window.getComputedStyle():如何使用默认值丢弃属性?

U.P*_*U.P 13 javascript google-chrome

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

Hem*_*ock 8

浏览铬源导致我: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);
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

  • 将在 Chrome 63 中删除 https://developers.google.com/web/updates/2017/10/chrome-63-deprecations#remove_getmatchedcssrules (2认同)