\r
-var X_Event_last = 0,\r
- X_Event_Rename = {},\r
+var X_Event_Rename = {},\r
X_Event_RenameTo = {},\r
\r
+ // TODO IFRAMEload, SCRIPTload, LINKload raw.readyState !== 'complete' && raw.readyState !== 'loaded' && this.dispatch( 'load' )\r
X_Event_proxy = {\r
\r
- load : X_UA.IE < 9 && {\r
- check : function( eventDispatcher ){\r
- return eventDispatcher._tag === 'IFRAME' || eventDispatcher._tag === 'SCRIPT';\r
- },\r
+ 'IFRAMEload' : function( eventDispatcher ){\r
+ eventDispatcher[ 'listen' ]( 'readystatechange', X_Event_proxy.IFRAMEload_proxy );\r
+ },\r
+ \r
+ IFRAMEload_proxy : function( e ){\r
+ var raw = this[ '_rawObject' ];\r
\r
- f : function( e ){\r
- var raw = this._rawObject;\r
- return raw.readyState !== 'complete' && raw.readyState !== 'loaded';\r
- }\r
+ return raw.readyState === 'complete' || raw.readyState === 'loaded' ?\r
+ this[ 'dispatch' ]( 'load' ) : X_Callback_PREVENT_DEFAULT, X_Callback_STOP_PROPAGATION;\r
},\r
\r
- contextmenu : X_UA.Opera && {\r
- \r
- rename : 'mousedown',\r
- \r
- f : function( e ){\r
- return e.button === 2;\r
- }\r
- \r
- }\r
+ // X_UA[ 'Opera' ]\r
+ 'contextmenu' : function( eventDispatcher ){\r
+ eventDispatcher[ 'listen' ]( 'mousedown', contextmenu_proxy );\r
+ },\r
\r
+ contextmenu_proxy : function( e ){\r
+ return e.button === 2 ? this[ 'dispatch' ]( 'contextmenu' ) : X_Callback_NONE;\r
+ }\r
},\r
\r
X_Event_toPointer = !X_UA_HID.POINTER && ( X_UA_HID.TOUCH ?\r
{\r
- touchstart : 'pointerdown',\r
- mousedown : 'pointerdown',\r
- touchend : 'pointerup', \r
- mouseup : 'pointerup',\r
- touchmove : 'pointermove',\r
- mousemove : 'pointermove',\r
- touchcancel : 'pointercancel',\r
- contextmenu : 'contextmenu',\r
- dbclick : 'dbclick',\r
- click : 'click',\r
- tap : 'click'\r
+ 'touchstart' : 'pointerdown',\r
+ 'mousedown' : 'pointerdown',\r
+ 'touchend' : 'pointerup', \r
+ 'mouseup' : 'pointerup',\r
+ 'touchmove' : 'pointermove',\r
+ 'mousemove' : 'pointermove',\r
+ 'touchcancel' : 'pointercancel',\r
+ 'contextmenu' : 'contextmenu',\r
+ 'dbclick' : 'dbclick',\r
+ 'click' : 'click',\r
+ 'tap' : 'click'\r
} :\r
{\r
- mousedown : 'pointerdown',\r
- mouseup : 'pointerup',\r
- mousemove : 'pointermove',\r
- contextmenu : 'contextmenu',\r
- dbclick : 'dbclick',\r
- click : 'click'\r
+ 'mousedown' : 'pointerdown',\r
+ 'mouseup' : 'pointerup',\r
+ 'mousemove' : 'pointermove',\r
+ 'contextmenu' : 'contextmenu',\r
+ 'dbclick' : 'dbclick',\r
+ 'click' : 'click'\r
});\r
\r
-// 内部イベント\r
-X_TEMP.SYSTEM_EVENT_PRE_INIT = 5; // X_Listeners_.KILL_RESERVED に +1 した値から開始。\r
-X_TEMP.SYSTEM_EVENT_XTREE = 6;\r
-X_TEMP.SYSTEM_EVENT_INIT = 7;\r
+var // 内部イベント\r
+ X_EVENT_PRE_INIT = 5, // X_Listeners_.KILL_RESERVED に +1 した値から開始。\r
+ X_EVENT_XTREE_READY = 6,\r
+ X_EVENT_INIT = 7,\r
+\r
+ // 公開イベント\r
+ /* @const */\r
+ X_EVENT_XDOM_READY = 8,\r
+ \r
+ X_EVENT_COMPLETE = 9,\r
+ X_EVENT_READY = 10,\r
+ X_EVENT_SUCCESS = 11,\r
+ X_EVENT_ERROR = 12,\r
+ X_EVENT_PROGRESS = 13,\r
+ X_EVENT_BEFORE_CANCEL = 14,\r
+ X_EVENT_CANCELED = 15,\r
+ X_EVENT_TIMEOUT = 16,\r
+\r
+ /* @const */\r
+ X_EVENT_BEFORE_KILL_INSTANCE = 17,\r
+ /* @const */\r
+ X_EVENT_KILL_INSTANCE_CANCELED = 18,\r
+ /* @const */\r
+ X_EVENT_KILL_INSTANCE = 19,\r
+ \r
+ X_EVENT_VIEW_ACTIVATE = 20,\r
+ X_EVENT_VIEW_DEACTIVATE = 21,\r
+ X_EVENT_VIEW_RESIZED = 22,\r
+ X_EVENT_VIEW_TURNED = 23,\r
+\r
+ X_EVENT_BASE_FONT_RESIZED = 24,\r
+\r
+ X_EVENT_BEFORE_UPDATE = 25,\r
+ X_EVENT_UPDATED = 26,\r
+ X_EVENT_AFTER_UPDATE = 27,\r
+\r
+ X_EVENT_HASH_CHANGED = 28,\r
+\r
+\r
+ X_EVENT_BEFORE_UNLOAD = 29,\r
+ X_EVENT_UNLOAD = 30,\r
+ \r
+ X_EVENT_BACKEND_READY = 31,\r
+ X_EVENT_BACKEND_NONE = 32,\r
+ X_EVENT_BACKEND_RESEARCH = 33,\r
+ X_EVENT_BACKEND_CHANGED = 34,\r
+ \r
+ X_EVENT_ANIME_BEFORE_START = 35,\r
+ X_EVENT_ANIME_START = 36,\r
+ X_EVENT_ANIME = 37,\r
+ X_EVENT_ANIME_END = 38,\r
+ X_EVENT_ANIME_BEFORE_STOP = 39,\r
+ X_EVENT_ANIME_STOP = 40,\r
+ \r
+ X_EVENT_GPU_RELEASED = 41,\r
+\r
+ X_EVENT_MEDIA_PLAYING = 42,\r
+ X_EVENT_MEDIA_BEFORE_LOOP = 43,\r
+ X_EVENT_MEDIA_LOOPED = 44,\r
+ X_EVENT_MEDIA_PAUSED = 45,\r
+ X_EVENT_MEDIA_ENDED = 46,\r
+ X_EVENT_MEDIA_WAITING = 47,\r
+ X_EVENT_MEDIA_SEEKING = 48,\r
+ \r
+ X_Event_last = 48;\r
\r
/**\r
* フレームワーク内で定義されたイベント。\r
* @namespace X.Event\r
* @alias X.Event\r
+ * @enum {number}\r
*/\r
-X.Event = {\r
- XDOM_READY : 8,\r
- \r
- COMPLETE : 9,\r
- READY : 10,\r
- SUCCESS : 11,\r
- ERROR : 12,\r
- PROGRESS : 13,\r
- BEFORE_CANCEL : 14,\r
- CANCELED : 15,\r
- TIMEOUT : 16,\r
+X[ 'Event' ] = {\r
+ /**\r
+ * X.ViewPort で発生する。DomContentLoaded に相当。document.body.innerHTML の内容から X.Node ツリーの作成が完了した。\r
+ * このイベント以降、X.Doc.create(), X.Doc.find() 等が可能になる。\r
+ */\r
+ 'XDOM_READY' : X_EVENT_XDOM_READY,\r
\r
- BEFORE_KILL_INSTANCE : 17,\r
- KILL_INSTANCE_CANCELED : 18,\r
- KILL_INSTANCE : 19,\r
-\r
- VIEW_ACTIVATE : 20,\r
- VIEW_DEACTIVATE : 21,\r
- VIEW_RESIZED : 22,\r
- VIEW_TURNED : 23,\r
- BASE_FONT_RESIZED : 24,\r
+ 'COMPLETE' : X_EVENT_COMPLETE,\r
+ 'READY' : X_EVENT_READY,\r
+ 'SUCCESS' : X_EVENT_SUCCESS,\r
+ 'ERROR' : X_EVENT_ERROR,\r
+ 'PROGRESS' : X_EVENT_PROGRESS,\r
+ 'BEFORE_CANCEL' : X_EVENT_BEFORE_CANCEL,\r
+ 'CANCELED' : X_EVENT_CANCELED,\r
+ 'TIMEOUT' : X_EVENT_TIMEOUT,\r
+\r
+ /**\r
+ * X.EventDispatcher インスタンスを kill() すると発生。キャンセル可能。\r
+ */ \r
+ 'BEFORE_KILL_INSTANCE' : X_EVENT_BEFORE_KILL_INSTANCE,\r
+ /**\r
+ * X.EventDispatcher インスタンスの kill() がキャンセルされた場合に発生。\r
+ */ \r
+ 'KILL_INSTANCE_CANCELED' : X_EVENT_KILL_INSTANCE_CANCELED,\r
+ /**\r
+ * X.EventDispatcher インスタンスの kill が確定し、kill プロセスの前に発生。\r
+ */\r
+ 'KILL_INSTANCE' : X_EVENT_KILL_INSTANCE,\r
+\r
+ /**\r
+ * X.ViewPort で発生する。'visibilitychange', 'pageshow', window.onfocus を検出している。\r
+ */\r
+ 'VIEW_ACTIVATE' : X_EVENT_VIEW_ACTIVATE,\r
+ /**\r
+ * X.ViewPort で発生する。'visibilitychange', 'pagehide', window.onblur を検出している。\r
+ */\r
+ 'VIEW_DEACTIVATE' : X_EVENT_VIEW_DEACTIVATE,\r
+ /**\r
+ * X.ViewPort で発生する。\r
+ */\r
+ 'VIEW_RESIZED' : X_EVENT_VIEW_RESIZED,\r
+ /**\r
+ * X.ViewPort で発生する。\r
+ */\r
+ 'VIEW_TURNED' : X_EVENT_VIEW_TURNED,\r
+ /**\r
+ * X.ViewPort で発生する。ベースフォントサイズが変化すると発生する。body 直下の隠し要素のテキストサイズの変化で検出している。\r
+ */\r
+ 'BASE_FONT_RESIZED' : X_EVENT_BASE_FONT_RESIZED,\r
+\r
// in_page_jump\r
// on_screen_keyboard_show\r
// on_screen_keyboard_hide\r
- BEFORE_UPDATE : 25,// X_System このイベントで要素のサイズを取得すると無限ループに!\r
- UPDATED : 26,// X_System\r
- AFTER_UPDATE : 27,\r
\r
- HASH_CHANGED : 28,\r
+ /**\r
+ * X_System で発生する。このイベントで要素のサイズを取得すると無限ループに!\r
+ */\r
+ 'BEFORE_UPDATE' : X_EVENT_BEFORE_UPDATE,\r
+ /**\r
+ * X_System で発生する。X.Node ツリーへの変更を Real DOM に反映した。\r
+ */\r
+ 'UPDATED' : X_EVENT_UPDATED,\r
+ \r
+ /**\r
+ * X.ViewPort で発生する。X.Node ツリーへの変更を Real DOM に反映した。このイベントは lazyDispatch している。\r
+ */\r
+ 'AFTER_UPDATE' : X_EVENT_AFTER_UPDATE,\r
\r
- BEFORE_UNLOAD : 29,\r
- UNLOAD : 30,\r
+ 'HASH_CHANGED' : X_EVENT_HASH_CHANGED,\r
+\r
+ /**\r
+ * X.ViewPort で発生する。\r
+ */\r
+ 'BEFORE_UNLOAD' : X_EVENT_BEFORE_UNLOAD,\r
+ /**\r
+ * X.ViewPort で発生する。\r
+ */\r
+ 'UNLOAD' : X_EVENT_UNLOAD,\r
\r
- BACKEND_READY : 31,\r
- BACKEND_NONE : 32,\r
- BACKEND_RESEARCH : 33,\r
- BACKEND_CHANGED : 34,\r
+ 'BACKEND_READY' : X_EVENT_BACKEND_READY,\r
+ 'BACKEND_NONE' : X_EVENT_BACKEND_NONE,\r
+ 'BACKEND_RESEARCH' : X_EVENT_BACKEND_RESEARCH,\r
+ 'BACKEND_CHANGED' : X_EVENT_BACKEND_CHANGED,\r
\r
- ANIME_BEFORE_START : 35,\r
- ANIME_START : 36,\r
- ANIME : 37,\r
- ANIME_END : 38,\r
- ANIME_BEFORE_STOP : 39, // xnode.stop() のみ、指定時間による停止では呼ばれない\r
- ANIME_STOP : 40,\r
+ 'ANIME_BEFORE_START' : X_EVENT_ANIME_BEFORE_START,\r
+ 'ANIME_START' : X_EVENT_ANIME_START,\r
+ 'ANIME' : X_EVENT_ANIME,\r
+ 'ANIME_END' : X_EVENT_ANIME_END,\r
+ /**\r
+ * xnode.stop() のみ、指定時間による停止では呼ばれない\r
+ */\r
+ 'ANIME_BEFORE_STOP' : X_EVENT_ANIME_BEFORE_STOP,\r
+ 'ANIME_STOP' : X_EVENT_ANIME_STOP,\r
\r
- GPU_RELEASED : 41,\r
-\r
- MEDIA_PLAYING : 42,\r
- MEDIA_BEFORE_LOOP : 43, // cancelable\r
- MEDIA_LOOPED : 44,\r
- MEDIA_PAUSED : 45,\r
- MEDIA_ENDED : 46,\r
- MEDIA_WAITING : 47,\r
- MEDIA_SEEKING : 48\r
-};\r
+ 'GPU_RELEASED' : X_EVENT_GPU_RELEASED,\r
\r
-X_Event_last = 48;\r
+ 'MEDIA_PLAYING' : X_EVENT_MEDIA_PLAYING,\r
+ 'MEDIA_BEFORE_LOOP' : X_EVENT_MEDIA_BEFORE_LOOP, // cancelable\r
+ 'MEDIA_LOOPED' : X_EVENT_MEDIA_LOOPED,\r
+ 'MEDIA_PAUSED' : X_EVENT_MEDIA_PAUSED,\r
+ 'MEDIA_ENDED' : X_EVENT_MEDIA_ENDED,\r
+ 'MEDIA_WAITING' : X_EVENT_MEDIA_WAITING,\r
+ 'MEDIA_SEEKING' : X_EVENT_MEDIA_SEEKING\r
+};\r
\r
X_TEMP.onSystemReady.push(\r
function(){\r
for( k in X_Event_Rename ){\r
//if( X_EMPTY_OBJECT[ k ] ) continue;\r
name = X_Event_Rename[ k ];\r
- if( X.Type.isArray( name ) ){\r
+ if( X_Type_isArray( name ) ){\r
for( i = name.length; i; ){\r
X_Event_RenameTo[ name[ --i ] ] = k;\r
};\r