无法在Chrome中选择<linearGradient>和D3.js

Bor*_*rys 3 svg google-chrome linear-gradients d3.js

Chrome不会选择<linearGradient>D3.js. 在以下代码中,所有选择都是空的.

var defs = d3.select("body").append("svg").append("defs");
defs.append("linearGradient");
defs.append("linearGradient");
console.log(defs.selectAll("linearGradient")); // empty
console.log(defs.selectAll("lineargradient")); // empty
console.log(d3.selectAll("linearGradient")); // empty
Run Code Online (Sandbox Code Playgroud)

如果你替换<linearGradient>说它<mask>没事.

var defs = d3.select("body").append("svg").append("defs");
defs.append("mask");
defs.append("mask");
console.log(defs.selectAll("mask")); // 2 elements selected
Run Code Online (Sandbox Code Playgroud)

Firefox适用于两者.我使用的是Chrome 28.0.1500.95.请建议一种选择渐变的方法.

Lar*_*off 8

这是webkit中的一个错误 - 请参阅错误报告.简短的回答是因为它刚刚破裂.您可以通过明确引用需要修改的渐变来解决此问题,例如

var grad1 = defs.append("linearGradient");
Run Code Online (Sandbox Code Playgroud)

  • 将类应用于所有渐变是另一种解决方法. (2认同)