https://jsfiddle.net/swoq9g3f/1/
xlink:href
javascript でa を変更した後、Internet Explorer (v11.0.9600.17728) で単純な SVG が正しく描画されないという問題が発生しています。
IE で SVG だけをレンダリングすると、2 つの同心円が得られます。JavaScript はxlink:href
、<use>
要素#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()