OSDN Git Service

symbol要素を参照したuse要素が表示されないバグを修正
authordhrname <dhrname@users.sourceforge.jp>
Thu, 26 Jan 2012 09:38:24 +0000 (18:38 +0900)
committerdhrname <dhrname@users.sourceforge.jp>
Thu, 26 Jan 2012 09:38:24 +0000 (18:38 +0900)
org/w3c/dom/svg.js

index e1e1363..120e4af 100644 (file)
@@ -1567,7 +1567,7 @@ function SVGUseElement() {
         fontSize = parseFloat(style.getPropertyValue("font-size")),
         tgtb = tar.transform.baseVal,
         trans = tar.ownerDocument.documentElement.createSVGTransform(),
-        svg, ti;
+        svg, ti, ta;
     tar.x.baseVal._emToUnit(fontSize);
     tar.y.baseVal._emToUnit(fontSize);
     tar.width.baseVal._emToUnit(fontSize);
@@ -1576,6 +1576,7 @@ function SVGUseElement() {
     trans.setTranslate(tar.x.baseVal.value, tar.y.baseVal.value);
     tgtb.appendItem(trans);
     if (tar._instance.localName === "symbol") {
+      /*symbol要素の場合、別途svg要素に置き換える*/
       svg = tar.ownerDocument.createElementNS("http://www.w3.org/2000/svg", "svg");
       tar.appendChild(svg);
       svg.addEventListener("DOMNodeInsertedIntoDocument", function(evt){
@@ -1587,13 +1588,14 @@ function SVGUseElement() {
       svg.setAttributeNS(null, "height", tar.height.baseVal.value);
       ti = tar.instanceRoot.firstChild;
       while (ti) {
+        ta = ti.nextSibling;
         svg.appendChild(ti);
-        ti = ti.nextSibling;
+        ti = ta;
       }
     } else {
       tar.appendChild(tar.instanceRoot);
     }
-    evt = trans = tar = evtt = tgtb = style = fontSize = svg = ti = void 0;
+    evt = trans = tar = evtt = tgtb = style = fontSize = svg = ti = ta = void 0;
   }, false);
   SVGURIReference.apply(this);
   return this;