\r
// TODO ブラウザからの呼び出しの最後に登録された関数を呼び出す機能(例えば画面の更新)\r
var X_EventDispatcher_CURRENT_EVENTS = [];\r
-var X_EventDispatcher_ignoreActualEvent = '';\r
+var X_EventDispatcher_ignoreActualEvent;\r
+var X_EventDispatcher_rawEvent;\r
\r
// handleEvent を拡張可能にするために、クロージャに移動した\r
// Is this in regard to the Safari 1.x preventDefault bug on click/dblclick?\r
elm = this[ '_rawObject' ],\r
ev, ret;\r
\r
- /* if( e.type === X_EventDispatcher_ignoreActualEvent ){\r
+ if( X_EventDispatcher_ignoreActualEvent ){\r
e.cancelBubble = true;\r
return;\r
- }; */\r
+ };\r
\r
- ev = new X_DomEvent( e, this, elm );\r
+ X_EventDispatcher_rawEvent = e;\r
\r
+ ev = new X_DomEvent( e, this, elm );\r
+\r
X_EventDispatcher_CURRENT_EVENTS[ X_EventDispatcher_CURRENT_EVENTS.length ] = ev;\r
\r
ret = this[ 'dispatch' ]( ev );\r
\r
+ if( X_EventDispatcher_rawEvent === e ) X_EventDispatcher_rawEvent = null;\r
+\r
--X_EventDispatcher_CURRENT_EVENTS.length;\r
\r
if( ret & X_CALLBACK_STOP_PROPAGATION ){\r
e.cancelBubble = true;\r
};\r
+ \r
+ if( !X_EventDispatcher_CURRENT_EVENTS.length ) ExecuteAtEnd_onEnd();\r
+ \r
if( ret & X_CALLBACK_PREVENT_DEFAULT ){\r
- this[ '_tag' ] === 'A' && elm.blur();\r
+ X_EventDispatcher_ignoreActualEvent = true;\r
+ this[ '_tag' ] === 'A' && elm.blur(); // おかしくない??\r
+ X_EventDispatcher_ignoreActualEvent = false;\r
return e.returnValue = false;\r
};\r
}) :\r
//X_UA_EVENT.W3C || X_UA_EVENT.DOM0\r
(function( e ){\r
var ret = X_CALLBACK_NONE,\r
+ elm = this[ '_rawObject' ],\r
ev, i, l;\r
\r
- /* if( e.type === X_EventDispatcher_ignoreActualEvent ){\r
+ if( X_EventDispatcher_ignoreActualEvent ){\r
e.stopPropagation();\r
return;\r
- }; */\r
+ };\r
+\r
+ X_EventDispatcher_rawEvent = e;\r
\r
ev = new X_DomEvent( e, this );\r
X_EventDispatcher_CURRENT_EVENTS[ X_EventDispatcher_CURRENT_EVENTS.length ] = ev;\r
ret = this[ 'dispatch' ]( ev );\r
};\r
\r
+ if( X_EventDispatcher_rawEvent === e ) X_EventDispatcher_rawEvent = null;\r
+ \r
--X_EventDispatcher_CURRENT_EVENTS.length;\r
\r
+ if( !X_EventDispatcher_CURRENT_EVENTS.length ) ExecuteAtEnd_onEnd();\r
+ \r
if( ret & X_CALLBACK_STOP_PROPAGATION ){\r
e.stopPropagation();\r
};\r
if( ret & X_CALLBACK_PREVENT_DEFAULT ){\r
- this[ '_tag' ] === 'A' && this[ '_rawObject' ].blur();\r
+ X_EventDispatcher_ignoreActualEvent = true;\r
+ this[ '_tag' ] === 'A' && elm.blur();\r
+ X_EventDispatcher_ignoreActualEvent = false;\r
+ \r
e.preventDefault();\r
if( X_UA[ 'WebKit' ] < 525.13 ){ // Safari3-\r
if( e.type === 'click' || e.type === 'dbclick' ){\r