https://jsfiddle.net/swoq9g3f/1/的Internet Explorer更新時的XLink繪製SVG錯誤:爲<use>元素的href
我有其中一個簡單的SVG在Internet Explorer(v11.0.9600.17728)正確繪製一個問題,我改變xlink:href
與後JavaScript的。
如果你在IE中渲染的只是SVG,你會得到兩個同心圓。 javascript將<use>
元素的xlink:href
值設置爲#def1
,這是之前的值。在這個IE瀏覽器渲染出更大的圓圈後,隱藏在它後面的小圓圈。較小的圓圈稍後在svg文檔中表示它應該始終在較大的圓圈上進行渲染。我還包括一些致電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()
這很奇怪。它似乎是以相反的順序繪製兩個圓圈。 https://jsfiddle.net/swoq9g3f/4/您應該將此報告給IE錯誤跟蹤器:https://connect.microsoft.com/IE/Feedback –
謝謝,我提交了一個錯誤報告:https:// connect。 microsoft.com/IE/feedback/details/1323077我還通過強制IE重新繪製SVG來找到解決方法。看看我對這個問題的回答。 – pjgat09