svnno****@sourc*****
svnno****@sourc*****
2010年 3月 13日 (土) 20:14:40 JST
Revision: 1725 http://sourceforge.jp/projects/sie/svn/view?view=rev&revision=1725 Author: dhrname Date: 2010-03-13 20:14:40 +0900 (Sat, 13 Mar 2010) Log Message: ----------- 1, baseValプロパティを付けていない部分があったので、それを修正追加 2, VMLの名前空間を付ける作業を追加 3, 作業2に伴い、windowオブジェクトのonloadイベントに登録する作業を追加 Modified Paths: -------------- branches/ufltima/dom/svg.js Modified: branches/ufltima/dom/svg.js =================================================================== --- branches/ufltima/dom/svg.js 2010-03-13 11:12:48 UTC (rev 1724) +++ branches/ufltima/dom/svg.js 2010-03-13 11:14:40 UTC (rev 1725) @@ -182,7 +182,7 @@ var a,b,c,d,e,f,lis,deg,rad,degli; //transform属性の値を、SVGTransformListであるtransformプロパティに結びつける for (var j=0,cli=coma.length;j<cli;j++) { - var s = evt.currentTarget.createSVGTransform(); + var s = evt.target.ownerDocument.documentElement.createSVGTransform(); lis = list[j], com = coma[j]; deg = lis.match(degR); degli = deg.length; @@ -218,7 +218,7 @@ } } } - tar.transform.appendItem(s); + tar.transform.baseVal.appendItem(s); lis = com = deg = rad = null; } list = coma = mat = null; @@ -293,15 +293,15 @@ /*SVGMatrix*/ SVGElement.prototype.getCTM = function() { var s; if (this.parentNode) { - s = this.parentNode.getCTM().multiply(this.transform.consolidate()); + s = this.parentNode.getCTM().multiply(this.transform.baseVal.consolidate() || this.ownerDocument.documentElement.createSVGMatrix()); } else { - s = this.transform.consolidate(); + s = this.transform.baseVal.consolidate() || this.ownerDocument.documentElement.createSVGMatrix(); } return s; }; /*SVGMatrix*/ SVGElement.prototype.getScreenCTM = function(){ - if (this.parentNode) { + if (!this.parentNode) { return null; } var view = this.nearestViewportElement || this.ownerDocument.documentElement; @@ -1088,6 +1088,16 @@ xmlhttp = false; } } + if (!document.namespaces["v"]) { + document.namespaces.add("v","urn:schemas-microsoft-com:vml"); + document.namespaces.add("o","urn:schemas-microsoft-com:office:office"); + var st = document.createStyleSheet(); + var vmlUrl = "behavior: url(#default#VML);display: inline-block;} "; //inline-blockはIEのバグ対策 + st.cssText = "v\\:rect{" +vmlUrl+ "v\\:image{" +vmlUrl+ "v\\:fill{" +vmlUrl+ "v\\:stroke{" +vmlUrl+ "o\\:opacity2{" +vmlUrl + + "dn\\:defs{display:none}" + + "v\\:group{text-indent:0px;position:relative;width:100%;height:100%;" +vmlUrl + + "v\\:shape{width:100%;height:100%;" +vmlUrl; + } if (xmlhttp) { //HTML内のobject要素を探し出して、メソッドを結びつける var obje = document.getElementsByTagName("object"); @@ -1103,7 +1113,7 @@ str = xmlhttp.responseText.replace(/!DOCTYPE/,"!--").replace(/(dtd">|\]>)/,"-->"); doc.loadXML(str); var s = DOMImplementation.createDocument("http://www.w3.org/2000/svg", "svg"); - s.importNode(doc.documentElement); + s.importNode(doc.documentElement, true); return s; }; alert(objei.getSVGDocument()); @@ -1329,6 +1339,7 @@ function SVGTransformList() { /*readonly unsigned long*/ this.numberOfItems = 0; + this._list = []; return this; }; for (var prop in SVGStringList.prototype) { //prototypeのコピーで継承を行う @@ -1874,6 +1885,8 @@ } } } + var vi = tar.ownerDocument.documentElement.viewport; + var w = vi.width, h = vi.hight; tar._tar.path = dat + " e"; tar._tar.coordsize = w + " " + h; matrix = dat = x = y = null; @@ -2083,7 +2096,8 @@ } var dat = list.join(" "); //VMLに結び付けていく - var ele = tar._tar; + var ele = tar._tar, vi = tar.ownerDocument.documentElement.viewport; + var w = vi.width, h = vi.hight; ele.path = dat; ele.coordsize = w + " " + h; list = dat = ele = null; @@ -2825,4 +2839,13 @@ view: SVGViewElement, vkern: SVGVKernElement }; -GetSVGDocument(); \ No newline at end of file +NAIBU.addEvent = function(evt,lis){ + if (window.addEventListener) { + window.addEventListener(evt, lis, false); + } else if (window.attachEvent) { + window.attachEvent('on'+evt, lis); + } else { + window['on'+evt] = lis; + } +}; +NAIBU.addEvent("load", GetSVGDocument); \ No newline at end of file