cloneNode() 在 Internet Explorer 10 和 11 中更改属性值

cloneNode() changes attribute value in InternetExplorer 10 and 11

当我在名称为 feGaussianBlur 且具有属性 stdDeviation 的元素上调用 cloneNode() 时,InternetExplorer(10 和 11)总是将该值转换为 1.72443e+009 .

这是一个说明问题的四行代码:https://jsfiddle.net/kytbh4Ls/6/

如果更改元素名称,请使用不同的属性名称或 运行 在任何其他浏览器(Chrome、Firefox)上的 fiddle,所有内容 运行s正如预期的那样。使用不同的属性值不会改变任何内容。

造成这种非常奇怪的行为的原因可能是什么?有什么可以解决的吗?

此处使用 jQuery 的 clone() 而不是 cloneNode() 修改后的 fiddle,不幸的是产生了相同的结果:https://jsfiddle.net/kytbh4Ls/7/

问题是IE没有使用stdDeviation属性。相反,它使用 stdDeviationX 和 stdDeviationY。

看到这个fiddle...FIDDLE

这是Microsoft page for feGaussianBlur

var element = document.createElementNS('http://www.w3.org/2000/svg', "feGaussianBlur");
element.setAttribute('stdDeviationX', 5);
element.setAttribute('stdDeviationY', 5);

var clonedElement = element.cloneNode();

alert("Original:" + element.getAttribute("stdDeviationX") + ", Cloned:" + clonedElement.getAttribute("stdDeviationX"));

这是 Internet Explorer 中的明显错误。虽然 Internet Explorer 确实使用 stdDeviation 而不是 stdDeviationXstdDeviationY,但 cloneNode() 函数没有必要乱用属性。它应该 return 节点的克隆,而不是具有更改属性的节点。

您应该将此报告给 Internet Explorer 开发团队(如果您有时间的话)。目前您所能做的就是实施手动解决方法。