SVGO自定义插件。如何在removeAttr之前存储attr()。value

时间:2018-08-25 14:20:40

标签: javascript svg npm foreach

我正在尝试为SVGO构建自定义插件,以批量清理和格式化从illustrator导出的svg。

这部分的目的是将具有相同方面的元素与类保持在一起,而不是在每个元素上都具有类。

一切正常,除了当我尝试删除元素类时,循环失去了对它的跟踪,而且我不知道为什么?

如果有人可以帮助,那就太酷了!

这是我的代码的摘录:

//before it, loop through elements with conditions to keep <g></g> as "g"
var myclass;
g.content.forEach(function(inner){
  if (inner.hasAttr("class")){
    myclass = inner.attr('class').value; // this works as expected
    inner.removeAttr('class'); // this mess it all although it is called after (myclass = "")
    }
});

g.addAttr({
  name: 'class',
  value: myclass,
  prefix: '',
  local: ''
});

1 个答案:

答案 0 :(得分:0)

class attr是CSSClassList,所以我认为不应删除它。不久前(v1.0左右)添加了该样式,以便更好地处理样式(对于inlineStylesminifyStyles之类的插件)。看lib/svgo/css-class-list.js,我认为类似inner.attr('class').setClassValue()(带有空值或undefined参数值)的东西应该删除所有类。还没有测试。