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
而不是 stdDeviationX
和 stdDeviationY
,但 cloneNode()
函数没有必要乱用属性。它应该 return 节点的克隆,而不是具有更改属性的节点。
您应该将此报告给 Internet Explorer 开发团队(如果您有时间的话)。目前您所能做的就是实施手动解决方法。
当我在名称为 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
而不是 stdDeviationX
和 stdDeviationY
,但 cloneNode()
函数没有必要乱用属性。它应该 return 节点的克隆,而不是具有更改属性的节点。
您应该将此报告给 Internet Explorer 开发团队(如果您有时间的话)。目前您所能做的就是实施手动解决方法。