cloneNode()更改InternetExplorer 10和11中的属性值

时间:2015-06-15 14:16:03

标签: javascript jquery internet-explorer svg clone

当我对名称为cloneNode()且属性为feGaussianBlur的元素调用stdDeviation时,InternetExplorer(10和11)始终将值转换为1.72443e+009。< / p>

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

如果更改元素名称,使用其他属性名称或在任何其他浏览器(Chrome,Firefox)上运行小提琴,一切都按预期运行。使用不同的属性值不会改变任何内容。

这种奇怪的行为可能是什么原因?还有什么可以做的吗?

这是一个使用jQuery的clone()代替cloneNode()的改进小提琴,遗憾的是产生了相同的结果:https://jsfiddle.net/kytbh4Ls/7/

2 个答案:

答案 0 :(得分:1)

这是Internet Explorer中的一个明显错误。虽然Internet Explorer确实使用stdDeviation而不是stdDeviationXstdDeviationY,但cloneNode()函数在处理属性方面没有任何意义。它应返回节点的克隆,而不是具有已更改属性的节点。

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

答案 1 :(得分:0)

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

看到这个小提琴...... 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"));