[Sie-announce] SIEコード [1116] スタイルシートのプロパティleftとtopのデフォルト値がIE8ではautoなので、それの対策

Back to archive index

svnno****@sourc***** svnno****@sourc*****
2009年 4月 3日 (金) 20:08:25 JST


Revision: 1116
          http://svn.sourceforge.jp/view?root=sie&view=rev&rev=1116
Author:   dhrname
Date:     2009-04-03 20:08:25 +0900 (Fri, 03 Apr 2009)

Log Message:
-----------
スタイルシートのプロパティleftとtopのデフォルト値がIE8ではautoなので、それの対策

Modified Paths:
--------------
    branches/04x/046/sie.js

Modified: branches/04x/046/sie.js
===================================================================
--- branches/04x/046/sie.js	2009-04-01 13:18:15 UTC (rev 1115)
+++ branches/04x/046/sie.js	2009-04-03 11:08:25 UTC (rev 1116)
@@ -170,12 +170,12 @@
   } catch(e) {stlog.add(e,129);
   }
 }
-SVGtoVML.prototype.set = function stvset() {
+SVGtoVML.prototype.set = function stvset(ob) {
   var w = this.w, h = this.h, c = this.children;
   var sw = this.swi.value, sh = this.shi.value;
-  try {
   this.setObject(this.use,sw,sh);
   this.setObject(c,sw,sh);
+  try {
   var backr = document.createElement("v:rect"); //背景の作成
   backr.style.position = "absolute";
   backr.style.width = w+ "px";
@@ -185,7 +185,7 @@
   backr.setAttribute("filled", "false");
   this.rootElement.appendChild(backr);
   var trstyle = this.rootElement.style;
-  var tpstyle = this.rootElement.parentNode.style;
+  var tpstyle = ob.style;
   trstyle.visibility = "visible";
   //以下、画像を切り取り
   trstyle.overflow = "hidden";
@@ -195,11 +195,11 @@
   var bfl = parseFloat(backrs.left), bft = parseFloat(backrs.top);
   var bl = -this.vi._tx
   var bt = -this.vi._ty;
-  if (bfl !== 0) { //内部の図形にずれが生じたとき
+  if (bfl !== 0 && !isNaN(bfl)) { //内部の図形にずれが生じたとき(isNaNはIE8でautoがデフォルト値のため)
     bl = bfl;
     tpstyle.left = -bl+ "px";
   }
-  if (bft !== 0) {
+  if (bft !== 0 && !isNaN(bfl)) {
     bt = bft;
     tpstyle.top = -bt+ "px";
   }
@@ -1918,7 +1918,6 @@
   var obst = ob.style;
   ob.innerHTML = dc;
   var obc = ob.getElementsByTagName("group").item(0);  //obcはSVGのルート要素
-  obc.outerHTML = obc.outerHTML //IE8の標準モード対策
   var regaw = obc.getAttribute("svgwidth") || obwidth;
   var regah = obc.getAttribute("svgheight") || obheight;
   regw = new STLength(regaw,obwidth);
@@ -1930,8 +1929,10 @@
   var dn = new Date();
   STdocument[dn] = new SVGtoVML(obc,obwidth,obheight,regw,regh);
   obj.parentNode.insertBefore(ob,obj);
+  ob.outerHTML = ob.outerHTML //IE8の標準モード対策
+  obc.outerHTML = obc.outerHTML //IE8の標準モード対策
   STdocument[dn].read();
-  STdocument[dn].set();
+  STdocument[dn].set(ob);
   alert((new Date()).getTime() - dn.getTime());
   data = dc = null;
   if (NAIBU.STObject !== void 0) {NAIBU.STObject.next();}




Sie-announce メーリングリストの案内
Back to archive index