https://jsfiddle.net/swoq9g3f/1/
xlink:href
在我用 javascript更改 a 后,我遇到了一个问题,即在 Internet Explorer (v11.0.9600.17728) 中错误地绘制了一个简单的 SVG 。
如果你在 IE 中只渲染 SVG,你会得到两个同心圆。javascript 将元素的xlink:href
值设置为,这是它之前的值。之后,IE 只渲染较大的圆圈,较小的圆圈隐藏在其后面。较小的圆圈在 svg 文档的后面,这意味着它应该始终呈现在较大的圆圈之上。我还包括了一些对 的调用,但它们未能纠正问题。<use>
#def1
forceRedraw()
在 Chrome 或 Firefox 中不会发生此问题。这是什么原因造成的?有没有办法解决这个问题?
SVG:
<svg id="svg_element" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="400" height="400">
<defs>
<svg id="def1" width="300" height="300">
<g>
<circle cx="150" cy="150" r="100" />
<circle cx="150" cy="150" r="50" />
</g>
</svg>
<svg id="def2">
<use id="use_element" xlink:href="#def1" />
</svg>
</defs>
<g fill="white" stroke="black" >
<use xlink:href="#def2" />
</g>
</svg>
Javascript:
document.getElementById("use_element").setAttributeNS('http://www.w3.org/1999/xlink','href','#def1')
document.getElementById("def1").forceRedraw()
document.getElementById("def2").forceRedraw()
document.getElementById("svg_element").forceRedraw()