国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

javascript中自定義事件

Original 2016-11-12 14:47:35 355
abstract:自定義事件:用戶可以指定事件類型,這個類型實際上就是一個字符串,然后為這個類型的事件指定事件處理函數(shù),可以注冊多個事件處理函數(shù)(用數(shù)組管理),調用時,從多個事件處理函數(shù)中找到再調用。function EventTarget(){             this.han

自定義事件:用戶可以指定事件類型,這個類型實際上就是一個字符串,然后為這個類型的事件指定事件處理函數(shù),可以注冊多個事件處理函數(shù)(用數(shù)組管理),調用時,從多個事件處理函數(shù)中找到再調用。

function EventTarget(){
            this.handlers={};
        }

        EventTarget.prototype={
            constructor:EventTarget,
            addHandler:function(type,handler){
                if(typeof this.handlers[type]=='undefined'){
                    this.handlers[type]=new Array();
                }
                this.handlers[type].push(handler);
            },
            removeHandler:function(type,handler){
                if(this.handlers[type] instanceof Array){
                    var handlers=this.handlers[type];
                    for(var i=0,len=handlers.length;i<len;i++){
                        if(handler[i]==handler){
                            handlers.splice(i,1);
                            break;
                        }
                    }
                }
            },
            trigger:function(event){
                if(!event.target){
                    event.target=this;
                }
                if(this.handlers[event.type] instanceof Array){
                    var handlers=this.handlers[event.type];
                    for(var i=0,len=handlers.length;i<len;i++){
                        handlers[i](event);
                    }
                }
            }
        }

addHandler方法用于添加事件處理程序,removeHandler方法用于移除事件處理程序,所有的事件處理程序在屬性handlers中統(tǒng)一存儲管理。調用trigger方法觸發(fā)一個事件,該方法接收一個至少包含type屬性的對象作為參數(shù),觸發(fā)的時候會查找handlers屬性中對應type的事件處理程序。寫段代碼測試一下。

function onClose(event){
            alert('message:'+event.message);
        }

        var target=new EventTarget();
        target.addHandler('close',onClose);

        //瀏覽器不能幫我們創(chuàng)建事件對象了,自己創(chuàng)建一個,自定義事件對象的屬性
        var event={
            type:'close',
            message:'Page Cover closed!'
        };

        target.trigger(event);


Release Notes

Popular Entries