svnno****@sourc*****
svnno****@sourc*****
2010年 9月 5日 (日) 23:10:39 JST
Revision: 1987 http://sourceforge.jp/projects/sie/svn/view?view=rev&revision=1987 Author: dhrname Date: 2010-09-05 23:10:39 +0900 (Sun, 05 Sep 2010) Log Message: ----------- Modified Paths: -------------- branches/06x/061/org/w3c/dom/svg.js Modified: branches/06x/061/org/w3c/dom/svg.js =================================================================== --- branches/06x/061/org/w3c/dom/svg.js 2010-09-04 14:15:16 UTC (rev 1986) +++ branches/06x/061/org/w3c/dom/svg.js 2010-09-05 14:10:39 UTC (rev 1987) @@ -4060,6 +4060,7 @@ this.style.setProperty = function(){}; this._tar = null; /*readonly SVGElement*/ this.targetElement; + this._beginValue = this._endValue = null; this._currentFrame = 0; this._currentCount = 0; /*_maxCountはrepeatCount属性で指定された数値 @@ -4098,7 +4099,29 @@ this.addEventListener("DOMAttrModified", function(evt){ var tar = evt.target, name = evt.attrName; if (name === "begin") { - tar._eventSync(evt.newValue, + tar._beginValue = evt.newValue; + } else if (name === "end") { + tar._endValue = evt.newValue; + } else if (name === "dur") { + tar._simpleDuration = tar._getOffset(evt.newValue); + } else if (name === "repeatCount") { + tar._maxCount = parseFloat(evt.newValue); + tar._isRepeat = true; + } else if (name === "repeatDur") { + tar._maxDur = parseFloat(evt.newValue); + tar._isRepeat = true; + } + evt = null; + }, false); + this.addEventListener("DOMNodeInsertedIntoDocument", function(evt){ + var tar = evt.target; + if (tar.hasAttributeNS("http://www.w3.org/1999/xlink", "xlink:href")) { + tar.targetElement = tar.ownerDocument.getElementById(tar.getAttributeNS("http://www.w3.org/1999/xlink", "xlink:href").substring(1)) + } else { + tar.targetElement = tar.parentNode; + } + if (tar._beginValue) { + tar._eventSync(tar._beginValue, (function(te, offse, ta, t) { ta.addEventListener( t.match(te._eventRegExp)[0], function(){ @@ -4111,29 +4134,18 @@ } }, false); }), "beginElementAt"); - } else if (name === "end") { - tar._eventSync(evt.newValue, + } + if (tar._endValue) { + tar._eventSync(tar._endValue, (function(te, offse, ta, t) { ta.addEventListener( t.match(te._eventRegExp)[0], function(){ te.endElementAt(offse); }, false ); }), "endElementAt"); - } else if (name === "dur") { - tar._simpleDuration = tar._getOffset(evt.newValue); - } else if (name === "repeatCount") { - tar._maxCount = parseFloat(evt.newValue); - tar._isRepeat = true; - } else if (name === "repeatDur") { - tar._maxDur = parseFloat(evt.newValue); - tar._isRepeat = true; } - evt = null; + evt = tar = null; }, false); - this.addEventListener("DOMNodeInsertedIntoDocument", function(evt){ - evt.target.targetElement = evt.target.parentNode; - evt = null; - }, false); this.addEventListener("repeatEvent", function(evt) { var tar = evt.target; if ((tar._currentCount >= tar._maxCount) || (tar.getCurrentTime() >= (tar._maxDur+tar.getStartTime()))) { @@ -4170,8 +4182,8 @@ this._begin = NAIBU.Time.Max; if ( /(mouse|activ|click)/.test(t) ) { //イベントがある場合 var tar; - if ( /\.\D/.test(t) ) { - tar = this.ownerDocument.getElementById( t.substring(0, t.indexOf(".")) ); + if ( /([^;]+)\.\D/.test(t) ) { + tar = this.ownerDocument.getElementById(RegExp.$1); } else { tar = this.targetElement; }