最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

關(guān)于js注冊事件的常用方法

 更新時間:2013年04月03日 15:44:55   作者:  
為了兼容各種瀏覽器,今天沒事特意復(fù)習(xí)了一下js原生事件特性,對其封裝一下。

不解釋,看代碼:

復(fù)制代碼 代碼如下:

;(function(){
    //進(jìn)行庫封裝,防止對象污染
    window['cm']={};
/**
    *給對象注冊事件
    */
    var addListener=function(element,type,fn){
        if(typeof element == 'undefined') return false;
        if(element.addEventListener){
            element.addEventListener(type,fn,false);
        }else if(element.attachEvent){
            //將事件緩沖到該標(biāo)簽上,已解決this指向window(現(xiàn)fn內(nèi)this指向element)和移除匿名事件問題
            var _EventRef='_'+type+'EventRef';
            if(!element[_EventRef]){
                element[_EventRef]=[];
            }
            var _EventRefs=element[_EventRef];
            var index;
            for(index in _EventRefs){
                if(_EventRefs[index]['realFn']==fn){
                    return;
                }
            }
            var nestFn=function(){
                fn.apply(element,arguments);
            };
            element[_EventRef].push({'realFn':fn,'nestFn':nestFn});
            element.attachEvent('on'+type,nestFn);
        }else{
            element['on'+type]=fn;
        }
    };
    window['cm']['addListener']=addListener;
    /**
    *移除對象上已注冊事件
    */
    var removeListener=function(element,type,fn){
        if(typeof element == 'undefined') return false;
        if(element.removeEventListener){
            element.removeEventListener(type,fn,false);
        }else if(element.detachEvent){
            var _EventRef='_'+type+'EventRef';
            if(!element[_EventRef]){
                element[_EventRef]=[];
            }
            var _EventRefs=element[_EventRef]
            var index;
            var nestFn;
            for(index in _EventRefs){
                if(_EventRefs[index]['realFn']==fn){
                    nestFn=_EventRefs[index]['nestFn'];
                    if(index==_EventRefs.length-1){
                        element[_EventRef]=_EventRefs.slice(0,index);
                    }else{
                        element[_EventRef]=_EventRefs.slice(0,index).concat(_EventRefs.slice(index+1,_EventRefs.length-1));
                    }
                    break;
                }
            }
            if(nestFn){
                element.detachEvent('on'+type,nestFn);
            }
        }else{
            element['on'+type]=null;
        }
    };
})();

 

相關(guān)文章

最新評論

湘潭市| 曲靖市| 永嘉县| 德阳市| 新和县| 江永县| 阳朔县| 咸宁市| 宕昌县| 深水埗区| 阜宁县| 邯郸市| 平顺县| 庆元县| 开封市| 卢湾区| 大姚县| 武强县| 新巴尔虎右旗| 汤原县| 白银市| 雷波县| 明星| 神农架林区| 抚宁县| 龙江县| 新竹县| 嘉禾县| 越西县| 永寿县| 祁门县| 攀枝花市| 马边| 长泰县| 岗巴县| 商城县| 文登市| 界首市| 黄浦区| 昌图县| 汤原县|