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

關于js注冊事件的常用方法

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

不解釋,看代碼:

復制代碼 代碼如下:

;(function(){
    //進行庫封裝,防止對象污染
    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){
            //將事件緩沖到該標簽上,已解決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;
        }
    };
})();

 

相關文章

最新評論

营口市| 邹平县| 杭锦旗| 钟山县| 玛多县| 简阳市| 宜昌市| 盘锦市| 龙山县| 苗栗县| 巴林左旗| 漳平市| 太仆寺旗| 湟中县| SHOW| 新安县| 自贡市| 洱源县| 波密县| 孝义市| 屯门区| 合作市| 沙雅县| 黔江区| 北宁市| 余姚市| 志丹县| 东安县| 集贤县| 乐平市| 长岭县| 左贡县| 阳原县| 从江县| 夹江县| 松桃| 宁阳县| 禄丰县| 屯门区| 肃宁县| 凤翔县|