当我对名称为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/
答案 0 :(得分:1)
这是Internet Explorer中的一个明显错误。虽然Internet Explorer确实使用stdDeviation
而不是stdDeviationX
和stdDeviationY
,但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"));