svnno****@sourc*****
svnno****@sourc*****
2011年 4月 2日 (土) 23:30:17 JST
Revision: 2549
http://sourceforge.jp/projects/sie/svn/view?view=rev&revision=2549
Author: dhrname
Date: 2011-04-02 23:30:17 +0900 (Sat, 02 Apr 2011)
Log Message:
-----------
GetSVGDocumentのwindowオブジェクトをNAIBUオブジェクトに変更
Modified Paths:
--------------
branches/07x/074/org/w3c/dom/svg.js
Modified: branches/07x/074/org/w3c/dom/svg.js
===================================================================
--- branches/07x/074/org/w3c/dom/svg.js 2011-04-02 14:21:18 UTC (rev 2548)
+++ branches/07x/074/org/w3c/dom/svg.js 2011-04-02 14:30:17 UTC (rev 2549)
@@ -1640,7 +1640,9 @@
return this;
}
function _ca_() {
- window._that._ca();
+ if ((NAIBU._that.xmlhttp.readyState === 4) && (NAIBU._that.xmlhttp.status === 200)) {
+ NAIBU._that._ca();
+ }
};
GetSVGDocument.prototype = {
/*_initメソッド
@@ -1661,221 +1663,219 @@
xmlhttp.setRequestHeader("X-Requested-With", "XMLHttpRequest");
this.xmlhttp = xmlhttp;
/*クロージャを利用しないことで、軽量化を計る*/
- window._that = this;
+ NAIBU._that = this;
xmlhttp.onreadystatechange = _ca_;
xmlhttp.send(null);
objei = data = null;
},
/*コール関数。全処理を担う*/
_ca : function() {
- if ((this.xmlhttp.readyState === 4) && (this.xmlhttp.status === 200)) {
- /*responseXMLを使うと、時々、空のデータを返すことがあるため(原因は不明)、
- *ここでは、responseTextを用いる
+ /*responseXMLを使うと、時々、空のデータを返すことがあるため(原因は不明)、
+ *ここでは、responseTextを用いる
+ */
+ var dsd = new Date();
+ var str = this.xmlhttp.responseText,
+ objei = this._tar,
+ s = DOMImplementation.createDocument("http://www.w3.org/2000/svg", "svg"),
+ tar = s.documentElement,
+ tview = tar.viewport,
+ objw, objh, fi, n, attr, att,
+ sdt = tar._tar,
+ sp = document.createElement("div"),
+ dcp = document.createElement("v:group"),
+ backr = document.createElement("v:rect"),
+ style, fontSize, w, h, sw, sh, trstyle, tpstyle, backrs, viewWidth, viewHeight,
+ bfl, bft, bl, backright, backdown, text,
+ _parseFloat = parseFloat,
+ ndoc = NAIBU.doc;
+ ndoc.async = false;
+ /*下記のプロパティについては、Microsoftのサイトを参照
+ *ResolveExternals Property [Second-level DOM]
+ * http://msdn.microsoft.com/en-us/library/ms761375%28VS.85%29.aspx
+ *ValidateOnParse Property [Second-level DOM]
+ * http://msdn.microsoft.com/en-us/library/ms760286%28VS.85%29.asp
+ */
+ ndoc.validateOnParse = false;
+ ndoc.resolveExternals = false;
+ ndoc.preserveWhiteSpace = true;
+ ndoc.loadXML(str);
+ /*IE6-8のみで使えるupdateIntervalは、
+ *描画間隔の調整が可能。デフォルトは0。
+ *スクロール時にバグが起きるので、0に戻してやる必要がある。
+ */
+ screen.updateInterval = 999;
+ if (/&[^;]+;/.test(str)) {
+ /*以下の処理は、実体参照を使ったとき
+ *代替の処理を用いて、実体参照を処理するもの
*/
- var dsd = new Date();
- var str = this.xmlhttp.responseText,
- objei = this._tar,
- s = DOMImplementation.createDocument("http://www.w3.org/2000/svg", "svg"),
- tar = s.documentElement,
- tview = tar.viewport,
- objw, objh, fi, n, attr, att,
- sdt = tar._tar,
- sp = document.createElement("div"),
- dcp = document.createElement("v:group"),
- backr = document.createElement("v:rect"),
- style, fontSize, w, h, sw, sh, trstyle, tpstyle, backrs, viewWidth, viewHeight,
- bfl, bft, bl, backright, backdown, text,
- _parseFloat = parseFloat,
- ndoc = NAIBU.doc;
- ndoc.async = false;
- /*下記のプロパティについては、Microsoftのサイトを参照
- *ResolveExternals Property [Second-level DOM]
- * http://msdn.microsoft.com/en-us/library/ms761375%28VS.85%29.aspx
- *ValidateOnParse Property [Second-level DOM]
- * http://msdn.microsoft.com/en-us/library/ms760286%28VS.85%29.asp
- */
- ndoc.validateOnParse = false;
- ndoc.resolveExternals = false;
- ndoc.preserveWhiteSpace = true;
- ndoc.loadXML(str);
- /*IE6-8のみで使えるupdateIntervalは、
- *描画間隔の調整が可能。デフォルトは0。
- *スクロール時にバグが起きるので、0に戻してやる必要がある。
- */
- screen.updateInterval = 999;
- if (/&[^;]+;/.test(str)) {
- /*以下の処理は、実体参照を使ったとき
- *代替の処理を用いて、実体参照を処理するもの
- */
- var tmp = str;
- var enti = (ndoc.doctype)? ndoc.doctype.entities: { length:0 };
- for (var i=0; i<enti.length; i++) {
- var map = enti.item(i);
- var regex = new RegExp("&"+map.nodeName+";", "g");
- tmp = tmp.replace(regex, map.firstChild.xml);
- }
- ndoc.loadXML(tmp);
- tmp = null;
+ var tmp = str;
+ var enti = (ndoc.doctype)? ndoc.doctype.entities: { length:0 };
+ for (var i=0; i<enti.length; i++) {
+ var map = enti.item(i);
+ var regex = new RegExp("&"+map.nodeName+";", "g");
+ tmp = tmp.replace(regex, map.firstChild.xml);
}
- tview.top = 0;
- tview.left = 0;
- tview.width = objei.clientWidth;
- tview.height = objei.clientHeight;
- if (tview.height < 24) { //IEの標準モードではclientHeightプロパティの値が小さくなることがある
- tview.height = screen.availHeight;
- }
- if (tar.viewport.height < 24) { //IEの標準モードではclientHeightプロパティの値が小さくなることがある
- tar.viewport.height = screen.width;
- }
- objw = objei.getAttribute("width");
- objh = objei.getAttribute("height");
- if (objw) {
- tar.setAttributeNS(null, "width", objw);
- }
- if (objh) {
- tar.setAttributeNS(null, "height", objh);
- }
- fi = ndoc.documentElement.firstChild;
- attr = ndoc.documentElement.attributes;
- /*ルート要素のNamedNodeMapを検索する*/
- for (var i=0,atli=attr.length;i<atli;++i) {
- att = s.importNode(attr[i], false);
- tar.setAttributeNodeNS(att);
- }
- str = attr = null;
- dcp.style.width = tview.width+ "px";
- dcp.style.height = tview.height+ "px";
- dcp.coordsize = tview.width+ " " +tview.height;
- sp.appendChild(dcp);
- objei.parentNode.insertBefore(sp, objei);
- dcp.appendChild(sdt);
- while (fi) { //子ノードを検索して、子供がいれば、importNodeメソッドを再帰的に実行する
- n = s.importNode(fi, true);
- tar.appendChild(n);
- fi = fi.nextSibling;
- }
- fi = null;
- /*以下では、VMLの要素とHTMLのCSSのプロパティを用いて、背景を
- *作り出す作業を行う。これは必須
+ ndoc.loadXML(tmp);
+ tmp = null;
+ }
+ tview.top = 0;
+ tview.left = 0;
+ tview.width = objei.clientWidth;
+ tview.height = objei.clientHeight;
+ if (tview.height < 24) { //IEの標準モードではclientHeightプロパティの値が小さくなることがある
+ tview.height = screen.availHeight;
+ }
+ if (tar.viewport.height < 24) { //IEの標準モードではclientHeightプロパティの値が小さくなることがある
+ tar.viewport.height = screen.width;
+ }
+ objw = objei.getAttribute("width");
+ objh = objei.getAttribute("height");
+ if (objw) {
+ tar.setAttributeNS(null, "width", objw);
+ }
+ if (objh) {
+ tar.setAttributeNS(null, "height", objh);
+ }
+ fi = ndoc.documentElement.firstChild;
+ attr = ndoc.documentElement.attributes;
+ /*ルート要素のNamedNodeMapを検索する*/
+ for (var i=0,atli=attr.length;i<atli;++i) {
+ att = s.importNode(attr[i], false);
+ tar.setAttributeNodeNS(att);
+ }
+ str = attr = null;
+ dcp.style.width = tview.width+ "px";
+ dcp.style.height = tview.height+ "px";
+ dcp.coordsize = tview.width+ " " +tview.height;
+ sp.appendChild(dcp);
+ objei.parentNode.insertBefore(sp, objei);
+ dcp.appendChild(sdt);
+ while (fi) { //子ノードを検索して、子供がいれば、importNodeメソッドを再帰的に実行する
+ n = s.importNode(fi, true);
+ tar.appendChild(n);
+ fi = fi.nextSibling;
+ }
+ fi = null;
+ /*以下では、VMLの要素とHTMLのCSSのプロパティを用いて、背景を
+ *作り出す作業を行う。これは必須
+ */
+ style = tar.ownerDocument.defaultView.getComputedStyle(tar, "");
+ fontSize = _parseFloat(style.getPropertyValue("font-size"));
+ tar.x.baseVal._emToUnit(fontSize);
+ tar.y.baseVal._emToUnit(fontSize);
+ tar.width.baseVal._emToUnit(fontSize);
+ tar.height.baseVal._emToUnit(fontSize);
+ w = tview.width;
+ h = tview.height;
+ sw = tar.width.baseVal.value;
+ sh = tar.height.baseVal.value;
+ backr.style.position = "absolute";
+ backr.style.width = w+ "px";
+ backr.style.height = h+ "px";
+ backr.style.zIndex = -1;
+ backr.stroked = "false";
+ backr.filled = "false";
+ tar._tar.appendChild(backr);
+ trstyle = tar._tar.style;
+ tpstyle = objei.style;
+ trstyle.visibility = "visible";
+ trstyle.position = "absolute";
+ /*以下、画像を切り取り*/
+ trstyle.overflow = "hidden";
+ backrs = backr.currentStyle;
+ /*ウィンドウ枠の長さを決定する*/
+ viewWidth = w > sw ? sw : w;
+ viewHeight = h > sh ? sh : h;
+ bfl = _parseFloat(backrs.left);
+ bft = _parseFloat(backrs.top);
+ bl = -tar._tx;
+ bt = -tar._ty;
+ if (bfl !== 0 && !isNaN(bfl)) { //内部の図形にずれが生じたとき(isNaNはIE8でautoがデフォルト値のため)
+ bl = bfl;
+ dcp.style.left = -bl+ "px";
+ }
+ if (bft !== 0 && !isNaN(bfl)) {
+ bt = bft;
+ dcp.style.top = -bt+ "px";
+ }
+ backright = bl + viewWidth + 1;
+ backdown = bt + viewHeight + 1;
+ trstyle.clip = "rect(" +bt+ "px " +backright+ "px " +backdown+ "px " +bl+ "px)";
+ this._document = s;
+ if ("_svgload_limited" in s.documentElement) {
+ /*_svgload_limitedプロパティはXlink言語が使われていない限り、0である。
+ *xlink:href属性が指定されるたびに+1となる。
+ *0以外は、SVGLoadイベントが発火されない仕組みとなっている
+ *
+ *目的:
+ * Xlinkのリンク先のソースを読み込むまで、SVGLoadイベントを発火させないため
*/
- style = tar.ownerDocument.defaultView.getComputedStyle(tar, "");
- fontSize = _parseFloat(style.getPropertyValue("font-size"));
- tar.x.baseVal._emToUnit(fontSize);
- tar.y.baseVal._emToUnit(fontSize);
- tar.width.baseVal._emToUnit(fontSize);
- tar.height.baseVal._emToUnit(fontSize);
- w = tview.width;
- h = tview.height;
- sw = tar.width.baseVal.value;
- sh = tar.height.baseVal.value;
- backr.style.position = "absolute";
- backr.style.width = w+ "px";
- backr.style.height = h+ "px";
- backr.style.zIndex = -1;
- backr.stroked = "false";
- backr.filled = "false";
- tar._tar.appendChild(backr);
- trstyle = tar._tar.style;
- tpstyle = objei.style;
- trstyle.visibility = "visible";
- trstyle.position = "absolute";
- /*以下、画像を切り取り*/
- trstyle.overflow = "hidden";
- backrs = backr.currentStyle;
- /*ウィンドウ枠の長さを決定する*/
- viewWidth = w > sw ? sw : w;
- viewHeight = h > sh ? sh : h;
- bfl = _parseFloat(backrs.left);
- bft = _parseFloat(backrs.top);
- bl = -tar._tx;
- bt = -tar._ty;
- if (bfl !== 0 && !isNaN(bfl)) { //内部の図形にずれが生じたとき(isNaNはIE8でautoがデフォルト値のため)
- bl = bfl;
- dcp.style.left = -bl+ "px";
+ s.documentElement._svgload_limited--;
+ if (s.documentElement._svgload_limited < 0) {
+ var evt = s.createEvent("SVGEvents");
+ evt.initEvent("SVGLoad", false, false);
+ s.documentElement.dispatchEvent(evt);
}
- if (bft !== 0 && !isNaN(bfl)) {
- bt = bft;
- dcp.style.top = -bt+ "px";
+ }
+ //以下、テキストの位置を修正
+ text = s.documentElement._tar.getElementsByTagName("div");
+ for (var i=0,textli=text.length;i<textli;++i) {
+ var texti = text[i];
+ if (texti.firstChild.nodeName !== "shape") { //radialGradient用のdiv要素でないならば
+ var tis = texti.style;
+ tis.left = _parseFloat(tis.left) + bl + "px";
+ tis.top = _parseFloat(tis.top) + bt + "px";
+ tis = null;
}
- backright = bl + viewWidth + 1;
- backdown = bt + viewHeight + 1;
- trstyle.clip = "rect(" +bt+ "px " +backright+ "px " +backdown+ "px " +bl+ "px)";
- this._document = s;
- if ("_svgload_limited" in s.documentElement) {
- /*_svgload_limitedプロパティはXlink言語が使われていない限り、0である。
- *xlink:href属性が指定されるたびに+1となる。
- *0以外は、SVGLoadイベントが発火されない仕組みとなっている
- *
- *目的:
- * Xlinkのリンク先のソースを読み込むまで、SVGLoadイベントを発火させないため
- */
- s.documentElement._svgload_limited--;
- if (s.documentElement._svgload_limited < 0) {
- var evt = s.createEvent("SVGEvents");
- evt.initEvent("SVGLoad", false, false);
- s.documentElement.dispatchEvent(evt);
- }
- }
- //以下、テキストの位置を修正
- text = s.documentElement._tar.getElementsByTagName("div");
- for (var i=0,textli=text.length;i<textli;++i) {
- var texti = text[i];
- if (texti.firstChild.nodeName !== "shape") { //radialGradient用のdiv要素でないならば
- var tis = texti.style;
- tis.left = _parseFloat(tis.left) + bl + "px";
- tis.top = _parseFloat(tis.top) + bt + "px";
- tis = null;
- }
- }
- s.defaultView._cache = s.defaultView._cache_ele = null;
- evt = objei = tar = tview = objw = objh = n = att = sdt = sp = dcp = backr = w = h = sw = sh = style = fontSize = null;
- trstyle = tpstyle = backrs = viewWidth = viewHeight = text = bfl = bft = bl = bt = backdown = backright = null;
- text = _parseFloat = null;
- /*IEのメモリリーク対策として、空関数を入力*/
- this.xmlhttp.onreadystatechange = NAIBU.emptyFunction;
- alert(+(new Date()) - dsd.getTime())
- if (this._next) {
+ }
+ s.defaultView._cache = s.defaultView._cache_ele = null;
+ evt = objei = tar = tview = objw = objh = n = att = sdt = sp = dcp = backr = w = h = sw = sh = style = fontSize = null;
+ trstyle = tpstyle = backrs = viewWidth = viewHeight = text = bfl = bft = bl = bt = backdown = backright = null;
+ text = _parseFloat = null;
+ /*IEのメモリリーク対策として、空関数を入力*/
+ this.xmlhttp.onreadystatechange = NAIBU.emptyFunction;
+ alert(+(new Date()) - dsd.getTime())
+ if (this._next) {
+ s = null;
+ this._next._init();
+ } else {
+ /*全要素の読み込みが終了した場合*/
+ if (s.implementation._buffer_) {
+ screen.updateInterval = 0;
+ /*以下はバッファリングにためておいた要素とイベントを、後から実行する*/
+ NAIBU._buff_num = 0;
+ NAIBU._buff = setInterval(function(){
+ var n = NAIBU._buff_num,
+ dbuf = DOMImplementation._buffer_,
+ dbufli = dbuf.length,
+ s, evt;
+ if (dbufli === 0) {
+ clearInterval(Event._buff);
+ } else {
+ for (var i=0;i<50;++i) {
+ s = dbuf[n];
+ evt = dbuf[n+1];
+ s.dispatchEvent(evt);
+ n += 2;
+ s = evt = null;
+ if (n >= dbufli) {
+ clearInterval(NAIBU._buff);
+ DOMImplementation._buffer_ = null;
+ NAIBU.Time.start();
+ dbuf = n = dbufli = null;
+ return;
+ }
+ }
+ NAIBU._buff_num = n;
+ }
+ dbuf = n = dbufli = null;
+ }, 1);
s = null;
- this._next._init();
} else {
- /*全要素の読み込みが終了した場合*/
- if (s.implementation._buffer_) {
- screen.updateInterval = 0;
- /*以下はバッファリングにためておいた要素とイベントを、後から実行する*/
- NAIBU._buff_num = 0;
- NAIBU._buff = setInterval(function(){
- var n = NAIBU._buff_num,
- dbuf = DOMImplementation._buffer_,
- dbufli = dbuf.length,
- s, evt;
- if (dbufli === 0) {
- clearInterval(Event._buff);
- } else {
- for (var i=0;i<50;++i) {
- s = dbuf[n];
- evt = dbuf[n+1];
- s.dispatchEvent(evt);
- n += 2;
- s = evt = null;
- if (n >= dbufli) {
- clearInterval(NAIBU._buff);
- DOMImplementation._buffer_ = null;
- NAIBU.Time.start();
- dbuf = n = dbufli = null;
- return;
- }
- }
- NAIBU._buff_num = n;
- }
- dbuf = n = dbufli = null;
- }, 1);
- s = null;
- } else {
- s = null;
- NAIBU.Time.start();
- }
- delete NAIBU.doc;
+ s = null;
+ NAIBU.Time.start();
}
+ delete NAIBU.doc;
}
},
/*SVGDocument*/ getSVGDocument : function() {