svnno****@sourc*****
svnno****@sourc*****
2010年 2月 4日 (木) 23:38:03 JST
Revision: 1638 http://sourceforge.jp/projects/sie/svn/view?view=rev&revision=1638 Author: dhrname Date: 2010-02-04 23:38:03 +0900 (Thu, 04 Feb 2010) Log Message: ----------- Modified Paths: -------------- branches/ufltima/dom/events.js Modified: branches/ufltima/dom/events.js =================================================================== --- branches/ufltima/dom/events.js 2010-02-04 14:37:31 UTC (rev 1637) +++ branches/ufltima/dom/events.js 2010-02-04 14:38:03 UTC (rev 1638) @@ -247,15 +247,22 @@ /*unsigned short*/ MutationEvent.ADDITION = 2; /*unsigned short*/ MutationEvent.REMOVAL = 3; -/*MutationEventsの発動のために、setNamedItemNSを上書きする。ファイル統合やmakeの際は、重複するのでコアモジュールのメソッドは削除する*/ +/*MutationEventsの発動のために、setNamedItemNSを上書きする。ファイル統合やmakeの際は、 + *重複するのでコアモジュールのメソッドは削除する。モジュールテストを行うために、 + *このような形式をとることにする。なお、追加部分には区別を付けるために、前後にコメントを挿入する。 + */ /*Node*/ NamedNodeMap.prototype.setNamedItemNS = function(/*Node*/ arg) { var tgans = this.getNamedItemNS(arg.namespaceURI, arg.localName); + /*ここから*/ var evt = this.ownerDocument.createEvent("MutationEvents"); + /*ここまで追加*/ if (tgans) { //ノードがすでにあるならば、 var s = this[this._num]; this[this._num] = node; + /*ここから*/ evt.initMutationEvent("DOMAttrModified", true, false, node, null, node.nodeName, node.nodeName, MutationEvent.MODIFICATION); node.ownerElement.dispatchEvent(evt); //このとき、MutationEventsが発動 + /*ここまで追加*/ return s; } else { if ( arg.ownerElement !== void 0) { //ノードがもはや別の要素で使われている @@ -263,8 +270,10 @@ } this[this.length] = arg; //新たに、argを項目として追加する this.length += 1; + /*ここから*/ evt.initMutationEvent("DOMAttrModified", true, false, node, null, node.nodeName, node.nodeName, MutationEvent.ADDITION); node.ownerElement.dispatchEvent(evt); + /*ここまで追加*/ return null; } evt = null; @@ -300,11 +309,13 @@ this.firstChild = this.childNodes[0]; this.lastChild = this.childNodes[this.childNodes.length-1]; n.parentNode = this; + /*ここから*/ var evt = this.ownerDocument.createEvent("MutationEvents"); evt.target = n; evt.initMutationEvent("DOMNodeInserted", true, false, this, null, null, null, null); n.dispatchEvent(evt); evt = null; + /*ここまで追加*/ return n; }; @@ -312,11 +323,13 @@ if (!(ele instanceof Node)) { //Nodeでなければ throw (new Error()); } + /*ここから*/ var evt = this.ownerDocument.createEvent("MutationEvents"); evt.target = ele; evt.initMutationEvent("DOMNodeRemoved", true, false, this, null, null, null, null); ele.dispatchEvent(evt); evt = null; + /*ここまで追加*/ if (ele.parentNode === this) { this.childNodes.splice(ele._num,1); //Arrayのspliceを利用して、リストからeleノードを排除 } else { //親が違う場合 @@ -332,11 +345,13 @@ var pd = this.data; this.data += arg; this.length = this.data.length; + /*ここから*/ var evt = this.ownerDocument.createEvent("MutationEvents"); evt.target = this.parentNode; evt.initMutationEvent("DOMCharacterDataModified", true, false, null, pd, this.data, null, null); ele.dispatchEvent(evt); evt = arg = pd = null; + /*ここまで追加*/ }; /*void*/ CharacterData.prototype.insertData = function( /*long*/ offset, /*string*/ arg) { var pd = this.data; @@ -344,11 +359,13 @@ var next = this.substring(offset, this.length - offset); //後半部分 this.data = pre + this.data + next; this.length = this.data.length; + /*ここから*/ var evt = this.ownerDocument.createEvent("MutationEvents"); evt.target = this.parentNode; evt.initMutationEvent("DOMCharacterDataModified", true, false, null, pd, this.data, null, null); ele.dispatchEvent(evt); evt = arg = pd = null; + /*ここまで追加*/ }; /*void*/ CharacterData.prototype.deleteData = function( /*long*/ offset, /*long*/ count) { var pd = this.data; @@ -359,11 +376,13 @@ } this.data = pre + next; this.length = this.data.length; + /*ここから*/ var evt = this.ownerDocument.createEvent("MutationEvents"); evt.target = this.parentNode; evt.initMutationEvent("DOMCharacterDataModified", true, false, null, pd, this.data, null, null); ele.dispatchEvent(evt); evt = pd = null; + /*ここまで追加*/ }; // _EVENTS_IDL_