svnno****@sourc*****
svnno****@sourc*****
2009年 4月 1日 (水) 22:18:15 JST
Revision: 1115 http://svn.sourceforge.jp/view?root=sie&view=rev&rev=1115 Author: dhrname Date: 2009-04-01 22:18:15 +0900 (Wed, 01 Apr 2009) Log Message: ----------- 1,IE8のため、CSS設定の際にはpxという単位を付けるようにした 2,VMLの生成はouterHTMLを使ってDOM経由で Modified Paths: -------------- branches/04x/046/sie.js Modified: branches/04x/046/sie.js =================================================================== --- branches/04x/046/sie.js 2009-03-29 14:30:36 UTC (rev 1114) +++ branches/04x/046/sie.js 2009-04-01 13:18:15 UTC (rev 1115) @@ -98,8 +98,8 @@ //vmlの名前空間をセット(必須) function setVMLNameSpace() { if (!document.namespaces["v"]) { - document.namespaces.add("v","urn:schemas-microsoft-com:vml"); - document.namespaces.add("o","urn:schemas-microsoft-com:office:office"); + document.namespaces.add("v","urn:schemas-microsoft-com:vml", "#default#VML"); + document.namespaces.add("o","urn:schemas-microsoft-com:office:office", "#default#VML"); } var st = document.createStyleSheet(); var vmlUrl = "behavior: url(#default#VML);display:inline-block;"; //inline-blockはIEのバグ対策 @@ -178,8 +178,8 @@ this.setObject(c,sw,sh); var backr = document.createElement("v:rect"); //背景の作成 backr.style.position = "absolute"; - backr.style.width = w; - backr.style.height = h; + backr.style.width = w+ "px"; + backr.style.height = h+ "px"; backr.style.zIndex = -1; backr.setAttribute("stroked", "false"); backr.setAttribute("filled", "false"); @@ -197,11 +197,11 @@ var bt = -this.vi._ty; if (bfl !== 0) { //内部の図形にずれが生じたとき bl = bfl; - tpstyle.left = -bl; + tpstyle.left = -bl+ "px"; } if (bft !== 0) { bt = bft; - tpstyle.top = -bt; + tpstyle.top = -bt+ "px"; } var backright = bl + viewWidth + 1; var backdown = bt + viewHeight + 1; @@ -211,14 +211,14 @@ for (var i=0,textli=text.length;i<textli;++i) { var texti = text[i]; var tis = texti.style; - tis.left = parseFloat(tis.left) + bl; - tis.top = parseFloat(tis.top) + bt; + tis.left = parseFloat(tis.left) + bl + "px"; + tis.top = parseFloat(tis.top) + bt + "px"; var tp = texti.parentNode; while (tp.nodeName === "group") { //group要素である限り、さかのぼる tp = tp.parentNode; } if (tp.nodeName === "A") { //先祖要素がa要素ならば - tis.marginLeft = -parseFloat(tis.fontSize); + tis.marginLeft = -parseFloat(tis.fontSize)+ "px"; tis.cursor = "hand"; } } @@ -378,8 +378,8 @@ this.xlink.set(); var txts = this.xlink.tar.style; txts.cursor = "hand"; - txts.left = 0; - txts.top = 0; + txts.left = "0px"; + txts.top = "0px"; txts.textDecoration = "none"; } catch(e) {stlog.add(e,204);} } @@ -414,16 +414,16 @@ if (ttp.lastChild.nodeName !== "rect") { var backr = document.createElement("v:rect"); var backrs = backr.style; //ずれを修正するためのもの - backrs.width = 1; - backrs.height = 1; - backrs.left = 0; - backrs.top = 0; + backrs.width = "1px"; + backrs.height = "1px"; + backrs.left = "0px"; + backrs.top = "0px"; backr.setAttribute("stroked", "false"); backr.setAttribute("filled", "false"); ttp.appendChild(backr); } - tts.width = 0; - tts.height = 0; + tts.width = "0px"; + tts.height = "0px"; this.paint.fset(w,h,ttm); } catch(e) {stlog.add(e,236);} try { @@ -497,15 +497,15 @@ try { var tts = this.tar.style; tts.position = "relative"; - tts.left = (this.dx ? this.dx.value : 0) + dd.dx; - tts.top = (this.dy ? this.dy.value : 0) + dd.dy; + tts.left = (this.dx ? this.dx.value : 0) + dd.dx+ "px"; + tts.top = (this.dy ? this.dy.value : 0) + dd.dy+ "px"; var p, ptm; if (this.x && this.y) { //x属性とy属性が指定されていたならば(注:仕様と相違がある可能性?)。 p = new Point(this.x.value, this.y.value); ptm = p.matrixTransform(this.transformable); tts.position = "absolute"; - tts.left = ptm.x; - tts.top = ptm.y; + tts.left = ptm.x+ "px"; + tts.top = ptm.y+ "px"; } p = ptm = null; //ずれの値を返す @@ -873,10 +873,10 @@ ts.position = "absolute"; var pt = new Point(this.x.value, this.y.value); var ptt = pt.matrixTransform(ttm); - ts.left = ptt.x; - ts.top = ptt.y; - ts.width = this.width.value * ttm.a; - ts.height = this.height.value * ttm.d; + ts.left = ptt.x+ "px"; + ts.top = ptt.y+ "px"; + ts.width = this.width.value * ttm.a+ "px"; + ts.height = this.height.value * ttm.d+ "px"; if (ttm.b !== 0 || ttm.c !== 0 || this.paint.fillopacity != 1) {//フィルター プロパティを使うと、PNGの透過性がなくなるので注意 ts.filter = "progid:DXImageTransform.Microsoft.Matrix progid:DXImageTransform.Microsoft.Alpha"; var ttfi = this.tar.filters.item('DXImageTransform.Microsoft.Matrix'); @@ -1310,7 +1310,7 @@ var outline = document.getElementById("_NAIBU_outline"); var background = document.createElement("div"); background.style.position = "absolute"; - background.style.textAlign = "left"; background.style.top = 0; background.style.left = 0; background.style.width = this.w; background.style.height = this.h; + background.style.textAlign = "left"; background.style.top = "0px"; background.style.left = "0px"; background.style.width = this.w+ "px"; background.style.height = this.h+ "px"; outline.appendChild(background); background.style.filter = "progid:DXImageTransform.Microsoft.Compositor"; background.filters.item('DXImageTransform.Microsoft.Compositor').Function = 23; @@ -1390,10 +1390,11 @@ var tts = this.tar.style; tts.whiteSpace = "nowrap"; tts.color = this.fill === "none" ? "transparent" : this.fill; - this.fontSize = tts.fontSize = fontset(this["font-size"],w,h,matrix); + this.fontSize = fontset(this["font-size"],w,h,matrix); + tts.fontSize = this.fontSize+ "px"; if (this.cursor !== "default") {tts.cursor = this.cursor;} this.writingMode = tts.writingMode; - tts.marginTop = (this.writingMode === "tb-rl") ? 0 : -parseFloat(tts.fontSize); + tts.marginTop = (this.writingMode === "tb-rl") ? "0px" : -parseFloat(tts.fontSize)+ "px"; } catch(e){stlog.add(e,1185);} } @@ -1598,8 +1599,10 @@ } } var ttps = this.tar.parentNode.style; - ttps.marginLeft = this._tx = tx; - ttps.marginTop = this._ty = ty; + this._tx = tx; + this._ty = ty; + ttps.marginLeft = this._tx+ "px"; + ttps.marginTop = this._ty+ "px"; var m = new Matrix(xr, 0, 0, yr, 0, 0); return m; } catch(e) {stlog.add(e,1031);} @@ -1915,13 +1918,14 @@ 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); regh = new STLength(regah,obheight); var regwv = regw.value, reghv = regh.value; - obst.width = regwv; - obst.height = reghv; + obst.width = regwv+ "px"; + obst.height = reghv+ "px"; ob.setAttribute("coordsize",regwv +" "+ reghv); var dn = new Date(); STdocument[dn] = new SVGtoVML(obc,obwidth,obheight,regw,regh);