/*
EventHandler
version 2
2011.02.19.
László Tamás
Ez a program megkönnyíti az események kezelését JavaScriptben.
Használatával gyorsan és könnyedén rendelhetünk objektumokhoz böngészőfüggetlenül akár több eseményt is.
Szúrd be a HTML fájlba a <script type="text/javascript" src="eventhandler.js"></script> kódot.
Pár példa a használathoz:
//az "elso" ID-jű elem onClick eseményére meghívódik a kattintas() függvény
addEvent("elso","click",kattintas);
//az előbb létrehozott esemény eltávolítása
removeEvent("elso","click",kattintas);
//a window objektum onLoad eseményére meghívódik a beallitasok() függvény
addEvent("#window","load",beallitasok);
//az összes <img> elem onMouseOver eseményére meghívódik az aktivkep() függveny
addEvent("tag:img","mouseover",aktivkep);
//az összes red osztályú elem onMouseOver eseményére meghívódik az aktiv() függveny
addEvent("class:red","mouseover",aktiv);
//a weboldal betöltése után több esemény beállítása
function esemenyek() {
addEvent("elso","click",kattintas);
addEvent("masodik","mouseover",egerrajta);
}
addEvent("#window","load",esemenyek);
//az eseménnyel rendelkező objektum elérése
function kattintas() {
alert(this.innerHTML);
}
addEvent("elso","click",kattintas);
*/
//új esemény hozzáadása
//a függvény meghívása: addEvent("objektum", "esemény", meghívottFüggvény);
function addEvent(id,e,fgv) {
//esemény rendelése a document objektumhoz
if (id=="#document") {
if (document.addEventListener)
document.addEventListener(e, fgv, false);
else if (document.attachEvent)
document.attachEvent("on"+e, fgv);
}
//esemény rendelése a window objektumhoz
else if (id=="#window") {
if (window.addEventListener)
window.addEventListener(e, fgv, false);
else if (window.attachEvent)
window.attachEvent("on"+e, fgv);
}
//esemény rendelése az összes bizonyos típusú elemhez
else if (id.substring(0,4)=="tag:") {
tags = document.getElementsByTagName(id.substring(4));
for (i=0; i<tags.length; i++) {
if (tags[i].addEventListener)
tags[i].addEventListener(e, fgv, false);
else if (tags[i].attachEvent)
tags[i].attachEvent("on"+e, fgv);
}
}
//esemény rendelése bizonyos osztályú elemekhez
else if (id.substring(0,6)=="class:") {
tags = document.getElementsByTagName("*");
for (i=0; i<tags.length; i++) {
if (tags[i].className!=id.substring(6)) continue;
if (tags[i].addEventListener)
tags[i].addEventListener(e, fgv, false);
else if (tags[i].attachEvent)
tags[i].attachEvent("on"+e, fgv);
}
}
//esemény hozzáréendelése egy objektumhoz ID alapján
else {
if (document.getElementById(id).addEventListener)
document.getElementById(id).addEventListener(e, fgv, false);
else if (document.getElementById(id).attachEvent)
document.getElementById(id).attachEvent("on"+e, fgv);
}
}
//meglévő esemény törlése
//a függvény meghívása: removeEvent("objektum", "esemény", meghívottFüggvény);
function removeEvent(id,e,fgv) {
//document objektum eseményének eltávolítása
if (id=="#document") {
if (document.removeEventListener)
document.removeEventListener(e, fgv, false);
else if (document.detachEvent)
document.detachEvent("on"+e, fgv);
}
//window objektum eseményének eltávolítása
else if (id=="#window") {
if (window.removeEventListener)
window.removeEventListener(e, fgv, false);
else if (window.detachEvent)
window.detachEvent("on"+e, fgv);
}
//esemény rendelése az összes bizonyos típusú elemhez
else if (id.substring(0,4)=="tag:") {
tags = document.getElementsByTagName(id.substring(4));
for (i=0; i<tags.length; i++) {
if (tags[i].removeEventListener)
tags[i].removeEventListener(e, fgv, false);
else if (tags[i].detachEvent)
tags[i].detachEvent("on"+e, fgv);
}
}
//esemény eltávolítása bizonyos osztályú elemektől
else if (id.substring(0,6)=="class:") {
tags = document.getElementsByTagName("*");
for (i=0; i<tags.length; i++) {
if (tags[i].className!=id.substring(6)) continue;
if (tags[i].removeEventListener)
tags[i].removeEventListener(e, fgv, false);
else if (tags[i].detachEvent)
tags[i].detachEvent("on"+e, fgv);
}
}
//objektum eseményének eltávolítása ID alapján
else {
if (document.getElementById(id).removeEventListener)
document.getElementById(id).removeEventListener(e, fgv, false);
else if (document.getElementById(id).detachEvent)
document.getElementById(id).detachEvent("on"+e, fgv);
}
}