svnno****@sourc*****
svnno****@sourc*****
2011年 3月 22日 (火) 23:28:00 JST
Revision: 2500
http://sourceforge.jp/projects/sie/svn/view?view=rev&revision=2500
Author: dhrname
Date: 2011-03-22 23:28:00 +0900 (Tue, 22 Mar 2011)
Log Message:
-----------
eventモジュールに関して、var文を整理
Modified Paths:
--------------
branches/07x/073/org/w3c/dom/events.js
Modified: branches/07x/073/org/w3c/dom/events.js
===================================================================
--- branches/07x/073/org/w3c/dom/events.js 2011-03-22 14:27:11 UTC (rev 2499)
+++ branches/07x/073/org/w3c/dom/events.js 2011-03-22 14:28:00 UTC (rev 2500)
@@ -111,19 +111,20 @@
/*void*/ Node.prototype.addEventListener = function( /*string*/ type, /*EventListener*/ listener, /*boolean*/ useCapture) {
try{
this.removeEventListener(type, listener, useCapture); //いったん、(あれば)リスナーを離す。
- var s = new EventListener(useCapture, type, listener); //リスナーを作成
+ var s = new EventListener(useCapture, type, listener), //リスナーを作成
+ t = type.charAt(0),
+ node, evt;
this._capter[this._capter.length] = s; //このノードにリスナーを登録しておく
- var t = type.charAt(0);
if (t !== "D" && t !== "S" && type !== "beginEvent" && type !== "endEvent" && type !== "repeatEvent") { //MouseEventsならば
- var node = this;
+ node = this;
node._tar.attachEvent("on" +type, function(){
- var evt = node.ownerDocument.createEvent("MouseEvents");
+ evt = node.ownerDocument.createEvent("MouseEvents");
evt.initMouseEvent(type, true, true, node.ownerDocument.defaultView, 0);
node.dispatchEvent(evt);
evt = null;
});
}
- s = t = null;
+ s = t = node = null;
}catch(e){
stlog.add(e, 122);
}
@@ -135,11 +136,17 @@
tce[i] = null;
}
}
+ i = tcli = tce = null;
};
/*boolean*/ Node.prototype.dispatchEvent = function( /*Event*/ evt) {
if (!evt.type || evt.type === "") { //Eventの型が設定されていないとき
throw new EventException(EventException.UNSPECIFIED_EVENT_TYPE_ERR);
}
+ var te = this,
+ td = this.ownerDocument,
+ time, tob,
+ type = /*Event.CAPTURING_PHASE*/ 1,
+ tce;
if (!this.ownerDocument._isLoaded) {
/*以下では、画像の処理に時間がかかりそうな場合、処理落ちとして、遅延処理
*を行い、バッファリングにイベント送付処理をためていく作業となる
@@ -150,11 +157,11 @@
if (!this.ownerDocument._limit_time_) {
this.ownerDocument._limit_time_ = evt.timeStamp;
} else {
- var time = this.ownerDocument._limit_time_;
+ time = this.ownerDocument._limit_time_;
if ((evt.timeStamp - time) > 1000) {
if (this.ownerDocument.implementation._buffer_) {
/*1秒を超えたらバッファにため込んで後で使う*/
- var tob = this.ownerDocument.implementation._buffer_;
+ tob = this.ownerDocument.implementation._buffer_;
tob[tob.length] = this;
tob[tob.length] = evt;
} else {
@@ -166,9 +173,7 @@
}
evt.target = this;
evt.eventPhase = 1;//Event.CAPTURING_PHASE
- var te = this;
//このノードからドキュメントノードにいたるまでの、DOMツリーのリストを作成しておく
- var td = this.ownerDocument;
td[/*Event.BUBBLING_PHASE*/ 3] = null;
/*以下の処理では、documentElementのparentNodeが
*Documentノードではなく、nullになっていることを前提としている。
@@ -184,20 +189,18 @@
/*最初に捕獲フェーズでDOMツリーを下っていき、イベントのターゲットについたら、
*そこで、浮上フェーズとして折り返すように、反復処理をおこなう。
*/
- var type = /*Event.CAPTURING_PHASE*/ 1;
while (td) {
evt.currentTarget = td;
if (td === this) { //イベントのターゲットに到着(折り返し地点)
type = 2;//Event.AT_TARGET;
}
evt.eventPhase = type;
- var tce = td._capter; //tceは登録しておいたリスナーのリスト
+ tce = td._capter; //tceは登録しておいたリスナーのリスト
for (var j=0,tcli=tce.length;j<tcli;++j){
if (tce[j] && (evt.type === tce[j]._type)) {
tce[j].handleEvent(evt);
}
}
- j = tcli = null;
if (evt._stop) {
break; //stopPropagationメソッドが呼ばれたら、停止する
}
@@ -210,7 +213,7 @@
td = td[type];
}
var ed = evt._default
- evt = te = s = d = tce = n = td = type = null;
+ evt = te = tce = n = td = type = time = tob = j = tcli =null;
return ed;
};
@@ -400,7 +403,10 @@
};
/*Node*/ Node.prototype.insertBefore = function( /*Node*/ n, ref) {
- var tp = this.parentNode;
+ var tp = this.parentNode,
+ rp, evt,
+ te = this,
+ s, descend, di;
if (tp) {
while (!tp) { //先祖をたどっていく
if (tp === n) { //先祖要素が追加ノードならばエラー
@@ -426,7 +432,7 @@
throw (new DOMException(DOMException.NOT_FOUND_ERR));
}
this.childNodes.splice(ref._num,1,n,ref); //Arrayのspliceを利用して、リストにnノードを追加
- var rp = ref.previousSibling;
+ rp = ref.previousSibling;
if (rp) {
rp.nextSibling = n;
}
@@ -447,14 +453,13 @@
ch = null;
}
/*ここから*/
- var evt = this.ownerDocument.createEvent("MutationEvents");
+ evt = this.ownerDocument.createEvent("MutationEvents");
evt.initMutationEvent("DOMNodeInserted", true, false, this, null, null, null, null);
n.dispatchEvent(evt);
/*以下のDOMNodeInsertedIntoDocumentイベントは、間接的、あるいは直接ノードが
*挿入されたときに発火する。間接的な挿入とは、サブツリーを作っておいて、それをいっぺんに挿入する場合など。
*このイベントは浮上しないことに注意を要する
*/
- var te = this, s;
do {
s = te;
te = te.parentNode;
@@ -469,16 +474,17 @@
if (!n.hasChildNodes()) { //子ノードがないので終了
return n;
}
- var descend = n.getElementsByTagNameNS("*", "*"); //全子孫要素を取得
+ descend = n.getElementsByTagNameNS("*", "*"); //全子孫要素を取得
if (descend) {
for (var i=0,dli=descend.length;i<dli;++i) {
- var di = descend[i];
+ di = descend[i];
di.dispatchEvent(evt);
di = null;
}
}
evt = descend = null;
/*ここまで追加*/
+ tp = rp = te = s = di = null;
return n;
};
@@ -520,40 +526,43 @@
};
/*void*/ CharacterData.prototype.appendData = function( /*string*/ arg) {
- var pd = this.data;
+ var pd = this.data,
+ evt;
this.data += arg;
this.length = this.data.length;
/*ここから*/
- var evt = this.ownerDocument.createEvent("MutationEvents");
+ evt = this.ownerDocument.createEvent("MutationEvents");
evt.initMutationEvent("DOMCharacterDataModified", true, false, null, pd, this.data, null, null);
this.parentNode.dispatchEvent(evt);
evt = arg = pd = null;
/*ここまで追加*/
};
/*void*/ CharacterData.prototype.insertData = function( /*long*/ offset, /*string*/ arg) {
- var pd = this.data;
- var pre = this.substring(0, offset - 1); //文字列を二つに分けた、前半部分
- var next = this.substring(offset, this.length - offset); //後半部分
+ var pd = this.data,
+ pre = this.substring(0, offset - 1), //文字列を二つに分けた、前半部分
+ next = this.substring(offset, this.length - offset), //後半部分
+ evt;
this.data = pre + this.data + next;
this.length = this.data.length;
/*ここから*/
- var evt = this.ownerDocument.createEvent("MutationEvents");
+ evt = this.ownerDocument.createEvent("MutationEvents");
evt.initMutationEvent("DOMCharacterDataModified", true, false, null, pd, this.data, null, null);
this.parentNode.dispatchEvent(evt);
- evt = arg = pd = null;
+ evt = arg = pd = pre = next = null;
/*ここまで追加*/
};
/*void*/ CharacterData.prototype.deleteData = function( /*long*/ offset, /*long*/ count) {
var pd = this.data;
- var pre = this.substring(0, offset - 1); //残すべき前半部分
- var next = this.substring(offset + count, this.length - 1); //後半部分
+ pre = this.substring(0, offset - 1), //残すべき前半部分
+ next = this.substring(offset + count, this.length - 1), //後半部分
+ evt;
if (offset + count > this.length) { //offsetとcountの和が文字全体の長さを超える場合、offsetから最後までのを削除
next = "";
}
this.data = pre + next;
this.length = this.data.length;
/*ここから*/
- var evt = this.ownerDocument.createEvent("MutationEvents");
+ evt = this.ownerDocument.createEvent("MutationEvents");
evt.initMutationEvent("DOMCharacterDataModified", true, false, null, pd, this.data, null, null);
this.parentNode.dispatchEvent(evt);
evt = pd = null;