OSDN Git Service

text要素とtspan要素のバグを修正
authordhrname <dhrname@users.sourceforge.jp>
Sun, 27 Nov 2011 14:22:14 +0000 (23:22 +0900)
committerdhrname <dhrname@users.sourceforge.jp>
Sun, 27 Nov 2011 14:22:14 +0000 (23:22 +0900)
org/w3c/dom/svg.js

index 954cbf6..f8f45f0 100644 (file)
@@ -3824,7 +3824,8 @@ function SVGTextContentElement(_doc) {
       tar.data = data;
       data = data.split('');
       for (var i=0, tdli=data.length;i<tdli;++i) {
-        var d = _doc.createElement("div"), dstyle = d.style;
+        var d = _doc.createElement("div"),
+            dstyle = d.style;
         dstyle.position = "absolute";
         dstyle.marginLeft = dstyle.marginRight = dstyle.marginTop = "0px";
         dstyle.paddingTop = dstyle.paddingLeft = "0px";
@@ -4305,23 +4306,29 @@ function SVGTextElement(_doc) {
       if (vis && !vis._isDefault) {
         tts.visibility = vis.cssText.substring(vis.cssText.indexOf(":")+1, vis.cssText.length);
       }
-      /*dipslayプロパティだけは個々に設定しておく必要がある*/
+      /*dipslayプロパティだけはdiv要素の個々に設定しておく必要がある
+       *なぜかといえば、div要素をdisplay:none;であらかじめ設定しているため。
+       */
       if (disp && !disp._isDefault && (disp.cssText.indexOf("none") > -1)) {
         di = "none";
             } else if (disp && !disp._isDefault) {
         di = "block";
       }
-      for (var i=0, j=0, tli=tft.length;i<tli;++i) {
-        tft[i].style.display = di;
-        while (ae[j]) { //a要素を処理
-          for (var l=0, tli=ae[j]._tars.length;l<tli;++l) {
-            ae[j]._tars[l].style.display = di;
-          }
-          ++j;
+      var jt = tar._tar.firstChild,
+          j = 0;
+      while (jt) {
+        jt.style.display = di;
+        jt = jt.nextSibling;
+      }
+      while (ae[j]) { //要素内部にあるa要素の処理
+        for (var l=0, tli=ae[j]._tars.length;l<tli;++l) {
+          ae[j]._tars[l].style.display = di;
         }
+        l = void 0;
+      ++j;
       }
       delete tar._cacheMatrix;
-      ae = isRect = evt = tar = style = tedeco = tpp = ttpc = style = color = cursor = disp = vis = ttps = backr = backrs = di = tft = void 0;
+      ae = isRect = evt = tar = style = tedeco = tpp = ttpc = style = color = cursor = disp = vis = ttps = backr = backrs = di = tft = jt = void 0;
     }, false);
     evt = tar = void 0;
   },false);