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

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

如果你用 <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

Firefox 对两者都适用。我正在使用 Chrome 28.0.1500.95。请提出一种选择渐变的方法。

最佳答案

这是 webkit 中的一个错误——参见 the bug report 。简短的回答是因为它刚刚坏了。您可以通过保留对需要修改的渐变的显式引用来解决此问题,例如

var grad1 = defs.append("linearGradient");

关于google-chrome - 无法在 Chrome 中使用 D3.js 选择 <linearGradient>,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18298318/

10-09 22:52