63 lines
1.5 KiB
JavaScript
63 lines
1.5 KiB
JavaScript
|
|
/*
|
||
|
|
j123 -- JavaScript common library
|
||
|
|
mail: sebastian.hanula@gmail.com
|
||
|
|
www: http://www.hanula.com/lab/j123
|
||
|
|
|
||
|
|
j123 events library
|
||
|
|
*/
|
||
|
|
|
||
|
|
j123.events = {
|
||
|
|
Key : {
|
||
|
|
MB_LEFT: 1,
|
||
|
|
MB_RIGHT: 2,
|
||
|
|
KEY_ESC: 27,
|
||
|
|
KEY_RETURN: 13
|
||
|
|
},
|
||
|
|
__events : false,
|
||
|
|
fix : function(e) {
|
||
|
|
if (!e) e = window.event;
|
||
|
|
if (e.target) {
|
||
|
|
if (e.target.nodeType == 3) e.target = e.target.parentNode
|
||
|
|
} else if (e.srcElement) {
|
||
|
|
e.target = e.srcElement
|
||
|
|
}
|
||
|
|
if(j123.browser.isIE) e.button = e.button-1;
|
||
|
|
|
||
|
|
return e
|
||
|
|
},
|
||
|
|
|
||
|
|
add: function(el,type,fn ) {
|
||
|
|
if(!this.__events) this.__events = [];
|
||
|
|
this.__events.push([el,type,fn]);
|
||
|
|
|
||
|
|
if(el.addEventListener) {
|
||
|
|
el.addEventListener(type, fn,false);
|
||
|
|
} else if(el.attachEvent) {
|
||
|
|
if (!el._listeners) el._listeners = new Array();
|
||
|
|
if (!el._listeners[type]) el._listeners[type] = new Array();
|
||
|
|
|
||
|
|
var applyFunc = function() {
|
||
|
|
fn.apply(el, new Array());
|
||
|
|
}
|
||
|
|
el._listeners[type][fn] = applyFunc;
|
||
|
|
el.attachEvent('on' + type, applyFunc);
|
||
|
|
}
|
||
|
|
},
|
||
|
|
|
||
|
|
remove:function(el,type, fn) {
|
||
|
|
if(el.removeEventListener) {
|
||
|
|
el.removeEventListener(type,fn,false);
|
||
|
|
} else if(el.detachEvent) {
|
||
|
|
if (el._listeners && el._listeners[type] && el._listeners[type][fn]) {
|
||
|
|
el.detachEvent('on' + type, el._listeners[type][fn]);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
},
|
||
|
|
unload : function(e) {
|
||
|
|
if(j123.events.__events)
|
||
|
|
for(var i=0;i<j123.events.__events;i++)
|
||
|
|
j123.events.remove(j123.events.__events[i][0],j123.events.__events[i][1],j123.events.__events[i][2]);
|
||
|
|
}
|
||
|
|
};
|
||
|
|
|
||
|
|
j123.events.add(window,'unload',j123.events.unload);
|