From 9805336c0aae4bbbce9ea52f36770d399aea89a4 Mon Sep 17 00:00:00 2001 From: Robin Appelman Date: Thu, 20 Jan 2011 16:16:35 +0100 Subject: [PATCH] cleanup event handling --- js/lib_event.js | 70 ++++++++----------------------------------------- 1 file changed, 11 insertions(+), 59 deletions(-) diff --git a/js/lib_event.js b/js/lib_event.js index f44a2049fb..fe48f6dbc8 100644 --- a/js/lib_event.js +++ b/js/lib_event.js @@ -1,12 +1,3 @@ -/** - * eventHandler - * - * @author Icewind - * @copyright 2009 - * @license http://www.gnu.org/licenses/gpl.html GNU Public License - * @version 0.1 - */ - /*event handling usage: document.events.add(node,type,function,arguments); or: node.addEvent(type,function,arguments); @@ -17,40 +8,25 @@ document.events.functions=Array(); document.events.args=Array(); document.events.add=function(element,type,func,args){ - if(!element.eventCallBacks){ - element.eventCallBacks=Array(); - } - if(!element.eventCallBacks[type]){ - element.eventCallBacks[type]=Array(); - } if(args){ if(!args.push){ args=[args]; } } - if(!args){ - args=Array(); - } - args.push('eventHolder'); - args.push('argHolder'); + args=args||[]; if (type && element){ - - //wrap the function in a function, otherwise it won't work if func is actually a callBack - var funcId=document.events.functions.length; - document.events.functions[funcId]=func; - document.events.args[funcId]=args; - eval('var callback=function(event,arg){document.events.callback.call(this,'+funcId+',event,arg)};'); - element.eventCallBacks[type].push(callback); + args.foreach(function(argument){ + func.bind(argument); + }) if(element.addEventListener){ - var eventType=type; - if(eventType.substr(0,2)=='on'){ - eventType=eventType.substr(2); + if(type.substr(0,2)=='on'){ + type=type.substr(2); } - element.addEventListener(eventType,callback,false); + element.addEventListener(type,func,false); }else if(element.attachEvent){ - element.attachEvent(type,callback); + element.attachEvent(type,func); } - return callback; + return func; } } document.events.remove=function(element,type,func){ @@ -64,33 +40,9 @@ document.events.remove=function(element,type,func){ } } -document.events.callback=function(funcId,event,arg){ - if(!event)var event=window.event; - var args=document.events.args[funcId]; - args[args.length-2]=event; - args[args.length-1]=arg; - result=document.events.functions[funcId].apply(this,args); - if(result===false){ - if(event.preventDefault){ - event.preventDefault(); - }; - } - return result; -} - -document.events.trigger=function(element,type,event,args){ - var callbacks=element.eventCallBacks[type]; - for(var i=0;i