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_