<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    js版事件管理器 V0.7

    在上一版的基礎上進行了如下改進:
    1、增加了事件參數傳遞的支持;
    2、增加了事件、攔截器的有效范圍定義的支持;
    3、增加了事件、攔截器的清除的支持。

    源碼如下:

    ??1 /*
    ??2 ?*?============================================================
    ??3 ?*?------------------------------------------------------------
    ??4 ?*?Author:?Bluedavy?(Bluedavy.blogjava.net)
    ??5 ?*?------------------------------------------------------------
    ??6 ?*?事件管理器
    ??7 ?*?1、事件的注冊/反注冊
    ??8 ?*?2、事件的調用
    ??9 ?*?3、事件的攔截器(事件執行前和事件執行后)
    ?10 ?*?4、攔截器的有效范圍
    ?11 ?*?5、事件執行的有效范圍
    ?12 ?*?TODO:COR?Pattern
    ?13 ?*?============================================================
    ?14 ? */

    ?15 ? var ?EventManager = Class.create();
    ?16 ?
    ?17 ? // ?事件集合
    ?18 ?EventManager.events = {} ;
    ?19 ?
    ?20 ? // ?事件攔截器集合
    ?21 ?EventManager.interceptors = {} ;
    ?22 ?
    ?23 ? // ?常量定義
    ?24 ?EventManager.Constant = {
    ?25 ?????SCOPE: " __ALL__ "
    ?26 ?}

    ?27 ?
    ?28 ? // ?注冊事件
    ?29 ?EventManager.registerEvent = function (eventalias,event,scope) {
    ?30 ????? if ( typeof (scope) == 'undefined') {
    ?31 ?????????scope = EventManager.Constant.SCOPE;
    ?32 ?????}

    ?33 ????? if (EventManager.events[scope] == null ) {
    ?34 ?????????EventManager.events[scope] = {} ;
    ?35 ?????}

    ?36 ?????EventManager.events[scope][eventalias] = event;
    ?37 ?}

    ?38 ?
    ?39 ? // ?反注冊事件
    ?40 ?EventManager.unregisterEvent = function (eventalias,scope) {
    ?41 ????? if ( typeof (scope) == 'undefined') {
    ?42 ?????????scope = EventManager.Constant.SCOPE;
    ?43 ?????}

    ?44 ?????EventManager.events[scope][eventalias] = null ;
    ?45 ?}

    ?46 ?
    ?47 ? // ?攔截器常量定義
    ?48 ?EventManager.Interceptor = {
    ?49 ?????BEFORE: " before " ,
    ?50 ?????AFTER: " after "
    ?51 ?}

    ?52 ?
    ?53 ? // ?清除某范圍內的事件以及攔截器
    ?54 ?EventManager.clear = function (scope) {
    ?55 ????? if ( typeof (scope) == 'undefined') {
    ?56 ?????????EventManager.events = {} ;????
    ?57 ?????????EventManager.interceptors = {} ;
    ?58 ?????}

    ?59 ????? else {
    ?60 ?????????EventManager.events[scope] = null ;
    ?61 ?????????EventManager.interceptors[scope] = null ;????
    ?62 ?????}

    ?63 ?}

    ?64 ?
    ?65 ? // ?事件直接調用
    ?66 ?EventManager.directyinvoke = function (eventalias,params,scope) {
    ?67 ????? if ( typeof (scope) == 'undefined') {
    ?68 ?????????scope = EventManager.Constant.SCOPE;
    ?69 ?????}

    ?70 ????? if (EventManager.events[scope] == null ) {
    ?71 ????????? return ;
    ?72 ?????}

    ?73 ????? var ?bindevent = EventManager.events[scope][eventalias];
    ?74 ????? if (bindevent != null ) {
    ?75 ????????? try {
    ?76 ?????????????EventManager.invokeInterceptor(eventalias,EventManager.Interceptor.BEFORE,params,scope);
    ?77 ????????????? if ( typeof (params) == 'undefined') {
    ?78 ?????????????????bindevent.apply( this ,[event]);
    ?79 ?????????????}

    ?80 ????????????? else {
    ?81 ?????????????????params.push(event);
    ?82 ?????????????????bindevent.apply( this ,params);
    ?83 ?????????????}

    ?84 ?????????????EventManager.invokeInterceptor(eventalias,EventManager.Interceptor.AFTER,params,scope);
    ?85 ?????????}

    ?86 ????????? catch (e) {
    ?87 ????????????? // ?不做任何提示
    ?88 ?????????????alert(e);
    ?89 ?????????}

    ?90 ?????}

    ?91 ?}

    ?92 ?
    ?93 ? // ?事件的調用(用于綁定到元素的事件上)
    ?94 ?EventManager.invoke = function (eventalias,params,scope) {
    ?95 ????? return ? function () {
    ?96 ?????????EventManager.directyinvoke(eventalias,params,scope);
    ?97 ?????}

    ?98 ?}

    ?99 ?
    100 ? // ?執行攔截器
    101 ?EventManager.invokeInterceptor = function (eventalias,type,params,scope) {
    102 ????? if (EventManager.interceptors[scope] == null ) {
    103 ????????? return ;
    104 ?????}

    105 ????? var ?interceptors = EventManager.interceptors[scope][eventalias];
    106 ????? if ( typeof (interceptors) == 'undefined') {
    107 ????????? return ;
    108 ?????}

    109 ????? var ?typeInterceptors = interceptors[type];
    110 ????? if (typeInterceptors == null ) {
    111 ????????? return ;
    112 ?????}

    113 ????? for ( var ?i = 0 ;i < typeInterceptors.length;i ++ ) {
    114 ????????? try {
    115 ????????????? if ( typeof (params) == 'undefined') {
    116 ?????????????????typeInterceptors[i].apply( this ,[event]);
    117 ?????????????}

    118 ????????????? else {
    119 ?????????????????params.push(event);
    120 ?????????????????typeInterceptors[i].apply( this ,params);
    121 ?????????????}

    122 ?????????}

    123 ????????? catch (e) {
    124 ?????????????alert(e);
    125 ?????????}

    126 ?????}

    127 ?}

    128 ?
    129 ? // ?注冊方法執行前的攔截器
    130 ?EventManager.addBeforeInterceptor = function (eventalias,interceptor,scope) {
    131 ?????EventManager.addInterceptor(eventalias,interceptor,EventManager.Interceptor.BEFORE,scope);
    132 ?}

    133 ?
    134 ? // ?刪除方法執行前的攔截器
    135 ?EventManager.removeBeforeInterceptor = function (eventalias,interceptor,scope) {
    136 ?????EventManager.removeInterceptor(eventalias,interceptor,EventManager.Interceptor.BEFORE,scope);
    137 ?}

    138 ?
    139 ? // ?注冊方法執行后的攔截器
    140 ?EventManager.addAfterInterceptor = function (eventalias,interceptor,scope) {
    141 ?????EventManager.addInterceptor(eventalias,interceptor,EventManager.Interceptor.AFTER,scope);
    142 ?}

    143 ?
    144 ? // ?刪除方法執行后的攔截器
    145 ?EventManager.removeAfterInterceptor = function (eventalias,interceptor,scope) {
    146 ?????EventManager.removeInterceptor(eventalias,interceptor,EventManager.Interceptor.AFTER,scope);
    147 ?}

    148 ?
    149 ? // ?添加攔截器
    150 ?EventManager.addInterceptor = function (eventalias,interceptor,type,scope) {
    151 ????? if ( typeof (scope) == 'undefined') {
    152 ?????????scope = EventManager.Constant.SCOPE;
    153 ?????}

    154 ????? if (EventManager.interceptors[scope] == null ) {
    155 ?????????EventManager.interceptors[scope] = {} ;
    156 ?????}

    157 ????? var ?interceptors = EventManager.interceptors[scope][eventalias];
    158 ????? if (interceptors == null ) {
    159 ?????????interceptors = {} ;
    160 ?????}

    161 ????? if (interceptors[type] == null ) {
    162 ?????????interceptors[type] = new ?Array();
    163 ?????}

    164 ?????interceptors[type].push(interceptor);
    165 ?????EventManager.interceptors[scope][eventalias] = interceptors;
    166 ?}

    167 ?
    168 ? // ?刪除攔截器
    169 ?EventManager.removeInterceptor = function (eventalias,interceptor,type,scope) {
    170 ????? if ( typeof (scope) == 'undefined') {
    171 ?????????scope = EventManager.Constant.SCOPE;
    172 ?????}

    173 ????? if (EventManager.interceptors[scope] == null ) {
    174 ????????? return ;
    175 ?????}

    176 ????? var ?interceptors = EventManager.events[scope][eventalias];
    177 ????? if (interceptors == null ) {
    178 ????????? return ;
    179 ?????}

    180 ????? if (interceptors[type] == null ) {
    181 ????????? return ;
    182 ?????}

    183 ?????interceptors[type].pop(interceptor);
    184 ?????EventManager.interceptors[scope][eventalias] = interceptors;
    185 ?}

    posted on 2006-03-29 16:17 BlueDavy 閱讀(1738) 評論(0)  編輯  收藏 所屬分類: Javascript

    公告

     









    feedsky
    抓蝦
    google reader
    鮮果

    導航

    <2006年3月>
    2627281234
    567891011
    12131415161718
    19202122232425
    2627282930311
    2345678

    統計

    隨筆分類

    隨筆檔案

    文章檔案

    Blogger's

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 日韩在线视频播放免费视频完整版| 三级网站在线免费观看| mm1313亚洲精品国产| 国产精品免费一区二区三区| 亚洲国产一区二区a毛片| 永久免费AV无码网站在线观看| 少妇亚洲免费精品| 亚洲精品成人图区| 亚洲国产成人久久综合野外| 久久久久久一品道精品免费看 | 亚洲动漫精品无码av天堂| 国产成人精品免费视频大| 一级毛片aaaaaa视频免费看| 亚洲国产日韩在线| 亚洲中文字幕无码一久久区| 韩国免费一级成人毛片| 久久精品成人免费观看97| 亚洲中文字幕无码av| 亚洲成av人片天堂网| 午夜国产羞羞视频免费网站| 99精品视频免费在线观看| 成年大片免费高清在线看黄| 亚洲另类春色校园小说| 亚洲欧洲日产国码无码久久99 | 亚洲国产人成精品| 99热在线精品免费全部my| a级毛片在线免费观看| 污视频网站在线观看免费| 33333在线亚洲| 99亚洲精品高清一二区| 在线精品亚洲一区二区三区| 成年美女黄网站18禁免费| 最近中文字幕无免费| 国产一级在线免费观看| 香港一级毛片免费看| 亚洲色偷偷偷综合网| 亚洲国产成人精品无码区在线网站| 国产亚洲一区二区手机在线观看| 免费大学生国产在线观看p| 日本一区二区三区免费高清| 84pao强力永久免费高清 |