window.addeventjs事件驱动函数集合addEvent等_Javascript教程-查字典教程网
window.addeventjs事件驱动函数集合addEvent等
window.addeventjs事件驱动函数集合addEvent等
发布时间:2016-12-30 来源:查字典编辑
摘要://writtenbyDeanEdwards,2005//withinputfromTinoZijdel,MatthiasMiller,Di...

//writtenbyDeanEdwards,2005

//withinputfromTinoZijdel,MatthiasMiller,DiegoPerini

//http://dean.edwards.name/weblog/2005/10/add-event/

functionaddEvent(element,type,handler){

if(element.addEventListener){

element.addEventListener(type,handler,false);

}else{

//assigneacheventhandlerauniqueID

if(!handler.$$guid)handler.$$guid=addEvent.guid++;

//createahashtableofeventtypesfortheelement

if(!element.events)element.events={};

//createahashtableofeventhandlersforeachelement/eventpair

varhandlers=element.events[type];

if(!handlers){

handlers=element.events[type]={};

//storetheexistingeventhandler(ifthereisone)

if(element["on"+type]){

handlers[0]=element["on"+type];

}

}

//storetheeventhandlerinthehashtable

handlers[handler.$$guid]=handler;

//assignaglobaleventhandlertodoallthework

element["on"+type]=handleEvent;

}

};

//acounterusedtocreateuniqueIDs

addEvent.guid=1;

functionremoveEvent(element,type,handler){

if(element.removeEventListener){

element.removeEventListener(type,handler,false);

}else{

//deletetheeventhandlerfromthehashtable

if(element.events&&element.events[type]){

deleteelement.events[type][handler.$$guid];

}

}

};

functionhandleEvent(event){

varreturnValue=true;

//grabtheeventobject(IEusesaglobaleventobject)

event=event||fixEvent(((this.ownerDocument||this.document||this).parentWindow||window).event);

//getareferencetothehashtableofeventhandlers

varhandlers=this.events[event.type];

//executeeacheventhandler

for(variinhandlers){

this.$$handleEvent=handlers[i];

if(this.$$handleEvent(event)===false){

returnValue=false;

}

}

returnreturnValue;

};

functionfixEvent(event){

//addW3Cstandardeventmethods

event.preventDefault=fixEvent.preventDefault;

event.stopPropagation=fixEvent.stopPropagation;

returnevent;

};

fixEvent.preventDefault=function(){

this.returnValue=false;

};

fixEvent.stopPropagation=function(){

this.cancelBubble=true;

};

相关阅读
推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
  • 大家都在看
  • 小编推荐
  • 猜你喜欢
  • 最新Javascript教程学习
    热门Javascript教程学习
    编程开发子分类