svnno****@sourc*****
svnno****@sourc*****
2011年 8月 25日 (木) 20:40:02 JST
Revision: 2893
http://sourceforge.jp/projects/sie/svn/view?view=rev&revision=2893
Author: dhrname
Date: 2011-08-25 20:40:02 +0900 (Thu, 25 Aug 2011)
Log Message:
-----------
SVGURIReferenceインターフェースと、関連する要素を改良して、SVGLoadイベントが2度起きるバグを修正
Modified Paths:
--------------
branches/08x/084/org/w3c/dom/svg.js
Modified: branches/08x/084/org/w3c/dom/svg.js
===================================================================
--- branches/08x/084/org/w3c/dom/svg.js 2011-08-23 11:49:39 UTC (rev 2892)
+++ branches/08x/084/org/w3c/dom/svg.js 2011-08-25 11:40:02 UTC (rev 2893)
@@ -1036,14 +1036,19 @@
doc = tar.ownerDocument;
ele = doc.getElementById(id);
tar._instance = ele;
- ev = doc.createEvent("SVGEvents");
- ev.initEvent("SVGLoad", false, false);
+ ev = tod.createEvent("SVGEvents");
+ ev.initEvent("S_Load", false, false);
tar.dispatchEvent(ev);
+ tar = xmlhttp = null;
} else if (uri.indexOf("data:") > -1) {
tar._tar.src = uri;
+ tar = xmlhttp = null;
} else if ((uri.indexOf("http:") > -1) || (uri.indexOf(".") === 0)){
if (tar.localName === "image") {
tar._tar.src = uri;
+ } else {
+ /*ここの_svgload_limitedは、リンクを読み込んだ後でSVGLoadイベントを実行させるという遅延処理で必要*/
+ tar.ownerDocument.documentElement._svgload_limited++;
}
xmlhttp.open("GET", uri, false);
xmlhttp.setRequestHeader("X-Requested-With", "XMLHttpRequest");
@@ -1078,19 +1083,27 @@
} else if (!!tar._tar) {
tar._tar.src = uri;
}
- ev = tar.ownerDocument.createEvent("SVGEvents");
- ev.initEvent("SVGLoad", false, false);
+ ev = tod.createEvent("SVGEvents");
+ ev.initEvent("S_Load", false, false);
tar.dispatchEvent(ev);
- type = doc = str = ev = null;
+ tar.ownerDocument.documentElement._svgload_limited--;
+ if (tar.ownerDocument.documentElement._svgload_limited < 0) {
+ ev = tod.createEvent("SVGEvents");
+ ev.initEvent("SVGLoad", false, false);
+ tod.documentElement.dispatchEvent(ev);
+ }
+ tar = type = doc = str = ev = null;
/*IEのメモリリーク対策として、空関数を入力*/
xmlhttp.onreadystatechange = NAIBU.emptyFunction;
+ xmlhttp = null;
}
};
xmlhttp.send(null);
}
}
+ tar.ownerDocument.documentElement._svgload_limited--;
}
- evt = tar = base = href = egbase = ep = b = lh = uri = xmlhttp = ui = id = doc = ele = ev = show= null;
+ evt = base = href = egbase = ep = b = lh = uri = ui = id = doc = ele = ev = show= null;
}, false);
tar = evt = null;
}, false);
@@ -1533,7 +1546,7 @@
}
evt.target.setAttributeNS("http://www.w3.org/1999/xlink", "xlink:show", "embed");
}, false);
- this.addEventListener("SVGLoad", function(evt){
+ this.addEventListener("S_Load", function(evt){
var tar = evt.target,
style = tar.ownerDocument.defaultView.getComputedStyle(tar, ""),
fontSize = parseFloat(style.getPropertyValue("font-size")),
@@ -1952,7 +1965,7 @@
}
evt = null;
}, false);
- this.addEventListener("SVGLoad", function(evt){
+ this.addEventListener("S_Load", function(evt){
var tar = evt.target,
sheet = tar.sheet,
styleText = tar._text,
@@ -1977,7 +1990,6 @@
}
sheet.cssRules[sheet.cssRules.length] = scri;
}
- tod.documentElement._svgload_limited--;
tod.documentElement.addEventListener("DOMNodeInsertedIntoDocument", function(evt) {
var tar = evt.target,
doc = tar.ownerDocument,
@@ -1995,11 +2007,6 @@
}
tar = doc = rules = null;
}, true);
- if (tod.documentElement._svgload_limited < 0) {
- evt = tod.createEvent("SVGEvents");
- evt.initEvent("SVGLoad", false, false);
- tod.documentElement.dispatchEvent(evt);
- }
tar = evt = style = sheet = styleText = tod = i = rules = rli = null;
}, false);
this.addEventListener("DOMNodeInserted", function(evt){
@@ -2014,7 +2021,7 @@
var tar = evt.target;
if ((evt.eventPhase === Event.AT_TARGET) && !tar.getAttributeNodeNS("http://www.w3.org/1999/xlink", "xlink:href")) {
var evtt = tar.ownerDocument.createEvent("SVGEvents");
- evtt.initEvent("SVGLoad", false, false);
+ evtt.initEvent("S_Load", false, false);
evt.currentTarget.dispatchEvent(evtt);
}
tar = evt = null;
@@ -4872,19 +4879,13 @@
}
evt = null;
}, false);
- this.addEventListener("SVGLoad", function(evt){
+ this.addEventListener("S_Load", function(evt){
var tar = evt.target, script = tar._text;
var tod = tar.ownerDocument;
NAIBU._temp_doc = tod;
script = script.replace(/function\s+(\w+)/g, "$1 = function");
script = "(function(document){" +script+ "})(NAIBU._temp_doc);"
eval(script);
- tod.documentElement._svgload_limited--;
- if (tod.documentElement._svgload_limited < 0) {
- evt = tod.createEvent("SVGEvents");
- evt.initEvent("SVGLoad", false, false);
- tod.documentElement.dispatchEvent(evt);
- }
tar = evt = script = null;
}, false);
this.addEventListener("DOMNodeInserted", function(evt){
@@ -4899,7 +4900,7 @@
var tar = evt.target;
if (evt.eventPhase === Event.AT_TARGET && !tar.getAttributeNodeNS("http://www.w3.org/1999/xlink", "xlink:href")) {
var evtt = tar.ownerDocument.createEvent("SVGEvents");
- evtt.initEvent("SVGLoad", false, false);
+ evtt.initEvent("S_Load", false, false);
evt.currentTarget.dispatchEvent(evtt);
}
tar = evt = null;
@@ -5843,7 +5844,7 @@
evt.target.ownerDocument.documentElement._svgload_limited--
evt.target.setAttributeNS("http://www.w3.org/1999/xlink", "xlink:show", "embed");
}, false);
- this.addEventListener("SVGLoad", function(evt){
+ this.addEventListener("S_Load", function(evt){
var tar = evt.target, tpp = tar.parentNode.parentNode.parentNode;
if (tpp.localName === "defs") {
tpp = tar.parentNode.parentNode; //tppをfont-face要素としておく