OSDN Git Service

Version 0.6.95, fix X.Timer, fix xhr @opera11-, fix for touch device.
[pettanr/clientJs.git] / 0.6.x / js / 01_core / 13_XEventDispatcher.js
index 970b3f6..0dab627 100644 (file)
@@ -444,19 +444,23 @@ var X_EventDispatcher_actualAddEvent =
                                for( i = type.length; i; ){\r
                                        X_EventDispatcher_actualAddEvent( that, type[ --i ], raw, list );\r
                                };\r
-                       } else {\r
+                       } else\r
+                       if( that._isXHR && X.UA.Opera < 12 ){\r
+                               // Opera11- の XHR は event オブジェクトが返らないため, eventType 毎に callback を指定する addEventListener もない\r
+                               raw[ 'on' + type ] = X_Callback_create( that, X_EventDispatcher_dispatch, [ type ] );\r
+                       } else\r
+                       if( that._isSilverlight ){\r
+                               list.slcallback = X_Callback_create( that, X_EventDispatcher_sliverLightDispatch, [ type ] );\r
+                               list.sltoken    = raw.AddEventListener( type, list.slcallback );\r
+                       } else {                \r
                                that._handleEvent || ( that._handleEvent = X_Callback_create( that, X_EventDispatcher_actualHandleEvent ) );\r
-                               \r
-                               if( that._isSilverlight ){\r
-                                       list.slcallback = X_Callback_create( that, X_EventDispatcher_sliverLightDispatch, [ type ] );\r
-                                       list.sltoken    = raw.AddEventListener( type, list.slcallback );\r
-                               } else\r
+\r
                                if( raw.addEventListener ){\r
                                        raw.addEventListener( type, that._handleEvent, false );\r
                                } else {\r
                                        // Safari は Image, Opera7 は window\r
                                        raw[ 'on' + type ] = that._handleEvent;\r
-                               };                              \r
+                               };\r
                        };\r
                }) :\r
        X_UA_EVENT.IE ?\r
@@ -465,29 +469,29 @@ var X_EventDispatcher_actualAddEvent =
                        //if( type === 'load' && that._tag && X.Dom.Event._LOAD_FIX_TAGS[ that._tag ] ){\r
                        //      type = 'readystatechange';\r
                        //};\r
+\r
+                       type = X.Dom.Event.Rename[ type ] || type;\r
+                               \r
+                       if( X.Type.isArray( type ) ){\r
+                               for( i = type.length; i; ){\r
+                                       X_EventDispatcher_actualAddEvent( that, type[ --i ], raw, list );\r
+                               };\r
+                       } else\r
                        if( that._isXHR ){\r
                                // ie8- の XHR は window.event が更新されないため, eventType 毎に callback を指定する\r
                                raw[ 'on' + type ] = X_Callback_create( that, X_EventDispatcher_dispatch, [ type ] );\r
-                       } else {\r
-                               type = X.Dom.Event.Rename[ type ] || type;\r
+                       } else                                  \r
+                       if( that._isSilverlight ){\r
+                               list.slcallback = X_Callback_create( that, X_EventDispatcher_sliverLightDispatch, [ type ] );\r
+                               list.sltoken    = raw.AddEventListener( type, list.slcallback );\r
+                       } else {                                \r
+                               that._handleEvent || ( that._handleEvent = X_Callback_create( that, X_EventDispatcher_actualHandleEvent ) );\r
                                \r
-                               if( X.Type.isArray( type ) ){\r
-                                       for( i = type.length; i; ){\r
-                                               X_EventDispatcher_actualAddEvent( that, type[ --i ], raw, list );\r
-                                       };\r
-                               } else{\r
-                                       that._handleEvent || ( that._handleEvent = X_Callback_create( that, X_EventDispatcher_actualHandleEvent ) );\r
-                                       \r
-                                       if( that._isSilverlight ){\r
-                                               list.slcallback = X_Callback_create( that, X_EventDispatcher_sliverLightDispatch, [ type ] );\r
-                                               list.sltoken    = raw.AddEventListener( type, list.slcallback );\r
-                                       } else\r
-                                       if( raw.attachEvent ){\r
-                                               raw.attachEvent( 'on' + type, that._handleEvent );\r
-                                       } else {\r
-                                               raw[ 'on' + type ] = that._handleEvent;\r
-                                       };\r
-                               };                              \r
+                               if( raw.attachEvent ){\r
+                                       raw.attachEvent( 'on' + type, that._handleEvent );\r
+                               } else {\r
+                                       raw[ 'on' + type ] = that._handleEvent;\r
+                               };\r
                        };\r
                }) :\r
                (function( that, type, raw, list ){\r
@@ -498,15 +502,16 @@ var X_EventDispatcher_actualAddEvent =
                                for( i = type.length; i; ){\r
                                        X_EventDispatcher_actualAddEvent( that, type[ --i ], raw, list );\r
                                };\r
+                       } else\r
+                       if( that._isXHR ){\r
+                               // ie4 mobile は XHR をサポート!\r
+                               raw[ 'on' + type ] = X_Callback_create( that, X_EventDispatcher_dispatch, [ type ] );\r
+                       } else\r
+                       if( that._isSilverlight ){\r
+                               list.slcallback = X_Callback_create( that, X_EventDispatcher_sliverLightDispatch, [ type ] );\r
+                               list.sltoken    = raw.AddEventListener( type, list.slcallback );\r
                        } else {\r
-                               that._handleEvent || ( that._handleEvent = X_Callback_create( that, X_EventDispatcher_actualHandleEvent ) );\r
-                               \r
-                               if( that._isSilverlight ){\r
-                                       list.slcallback = X_Callback_create( that, X_EventDispatcher_sliverLightDispatch, [ type ] );\r
-                                       list.sltoken    = raw.AddEventListener( type, list.slcallback );\r
-                               } else {\r
-                                       raw[ 'on' + type ] = that._handleEvent;\r
-                               };\r
+                               raw[ 'on' + type ] = that._handleEvent || ( that._handleEvent = X_Callback_create( that, X_EventDispatcher_actualHandleEvent ) );\r
                        };\r
                });\r
 \r
@@ -521,29 +526,32 @@ function X_EventDispatcher_sliverLightDispatch( sender, e, type ){
 var X_EventDispatcher_actualRemoveEvent =\r
        X_UA_EVENT.W3C /*&& ( X.UA.WebKit < 525.13 || X.UA.Opera7 || X.UA.NetFront < 4 )*/ ? // Safari3-\r
                (function( that, type, raw, list, skip ){\r
+                       var i;\r
                        type = X.Dom.Event.Rename[ type ] || type;\r
                        \r
                        if( X.Type.isArray( type ) ){\r
                                for( i = type.length; i; ){\r
                                        X_EventDispatcher_actualRemoveEvent( that, type[ --i ], raw, list, i ? true : skip );\r
                                };\r
+                       } else\r
+                       if( that._isXHR && X.UA.Opera < 12 ){\r
+                               X_Callback_correct( raw[ 'on' + type ] );\r
+                               raw[ 'on' + type ] = '';\r
+                       } else  \r
+                       if( that._isSilverlight ){\r
+                               raw.RemoveEventListener( type, list.sltoken ); // token\r
+                               X_Callback_correct( list.slcallback );\r
+                               delete list.sltoken;\r
+                               delete list.slcallback;\r
                        } else {\r
-                               \r
-                               if( that._isSilverlight ){\r
-                                       raw.RemoveEventListener( type, list.sltoken ); // token\r
-                                       X_Callback_correct( list.slcallback );\r
-                                       delete list.sltoken;\r
-                                       delete list.slcallback;\r
+                               if( raw.addEventListener ){\r
+                                       raw.removeEventListener( type, that._handleEvent, false );\r
                                } else {\r
-                                       if( raw.addEventListener ){\r
-                                               raw.removeEventListener( type, that._handleEvent, false );\r
-                                       } else {\r
-                                               raw[ 'on' + type ] = null;\r
-                                       };\r
-                                       if( !skip ){\r
-                                               X_Callback_correct( that._handleEvent );\r
-                                               delete that._handleEvent;\r
-                                       };                                      \r
+                                       raw[ 'on' + type ] = null;\r
+                               };\r
+                               if( !skip ){\r
+                                       X_Callback_correct( that._handleEvent );\r
+                                       delete that._handleEvent;\r
                                };\r
                        };\r
                }) :\r
@@ -553,37 +561,35 @@ var X_EventDispatcher_actualRemoveEvent =
                        //if( type === 'load' && that._tag && X.Dom.Event._LOAD_FIX_TAGS[ that._tag ] ){\r
                        //      type = 'readystatechange';\r
                        //};\r
+\r
+                       type = X.Dom.Event.Rename[ type ] || type;\r
+                       \r
+                       if( X.Type.isArray( type ) ){\r
+                               for( i = type.length; i; ){\r
+                                       X_EventDispatcher_actualRemoveEvent( that, type[ --i ], raw, list, i ? true : skip );\r
+                               };\r
+                       } else\r
                        if( that._isXHR ){\r
                                X_Callback_correct( raw[ 'on' + type ] );\r
                                raw[ 'on' + type ] = X.emptyFunction;\r
                                raw[ 'on' + type ] = '';\r
+                       } else  \r
+                       if( that._isSilverlight ){\r
+                               raw.RemoveEventListener( type, list.sltoken ); // token\r
+                               X_Callback_correct( list.slcallback );\r
+                               delete list.sltoken;\r
+                               delete list.slcallback;\r
                        } else {\r
-                               type = X.Dom.Event.Rename[ type ] || type;\r
-                               \r
-                               if( X.Type.isArray( type ) ){\r
-                                       for( i = type.length; i; ){\r
-                                               X_EventDispatcher_actualRemoveEvent( that, type[ --i ], raw, list, i ? true : skip );\r
-                                       };\r
+                               if( raw.attachEvent ){\r
+                                       raw.detachEvent( 'on' + type, that._handleEvent );\r
                                } else {\r
-                                       \r
-                                       if( that._isSilverlight ){\r
-                                               raw.RemoveEventListener( type, list.sltoken ); // token\r
-                                               X_Callback_correct( list.slcallback );\r
-                                               delete list.sltoken;\r
-                                               delete list.slcallback;\r
-                                       } else {\r
-                                               if( raw.attachEvent ){\r
-                                                       raw.detachEvent( 'on' + type, that._handleEvent );\r
-                                               } else {\r
-                                                       raw[ 'on' + type ] = X.emptyFunction;\r
-                                                       raw[ 'on' + type ] = '';\r
-                                               };\r
-                                               \r
-                                               if( !skip ){\r
-                                                       X_Callback_correct( that._handleEvent );\r
-                                                       delete that._handleEvent;\r
-                                               };                                              \r
-                                       };\r
+                                       raw[ 'on' + type ] = X.emptyFunction;\r
+                                       raw[ 'on' + type ] = '';\r
+                               };\r
+                               \r
+                               if( !skip ){\r
+                                       X_Callback_correct( that._handleEvent );\r
+                                       delete that._handleEvent;\r
                                };\r
                        };\r
                }) :\r
@@ -594,21 +600,24 @@ var X_EventDispatcher_actualRemoveEvent =
                                for( i = type.length; i; ){\r
                                        X_EventDispatcher_actualRemoveEvent( that, type[ --i ], raw, list, i ? true : skip );\r
                                };\r
+                       } else\r
+                       if( that._isXHR ){\r
+                               X_Callback_correct( raw[ 'on' + type ] );\r
+                               raw[ 'on' + type ] = X.emptyFunction;\r
+                               raw[ 'on' + type ] = '';\r
+                       } else\r
+                       if( that._isSilverlight ){\r
+                               raw.RemoveEventListener( type, list.sltoken ); // token\r
+                               X_Callback_correct( list.slcallback );\r
+                               delete list.sltoken;\r
+                               delete list.slcallback;\r
                        } else {\r
+                               raw[ 'on' + type ] = X.emptyFunction;\r
+                               raw[ 'on' + type ] = '';\r
                                \r
-                               if( that._isSilverlight ){\r
-                                       raw.RemoveEventListener( type, list.sltoken ); // token\r
-                                       X_Callback_correct( list.slcallback );\r
-                                       delete list.sltoken;\r
-                                       delete list.slcallback;\r
-                               } else {\r
-                                       raw[ 'on' + type ] = X.emptyFunction;\r
-                                       raw[ 'on' + type ] = '';\r
-                                       \r
-                                       if( !skip ){\r
-                                               X_Callback_correct( that._handleEvent );\r
-                                               delete that._handleEvent;\r
-                                       };                                      \r
+                               if( !skip ){\r
+                                       X_Callback_correct( that._handleEvent );\r
+                                       delete that._handleEvent;\r
                                };\r
                        };\r
                });\r