jesteś w: Główna > javascript > funkcje > javascript: addEvent()
Ostatnia aktualizacja tej strony: 2022-03-28, 21:03:16
funkcje javascript: NW() - otwórz link w nowym oknie
Autorem oryginalnej funkcji addEvent() jest John Resig. Zaletą tego rozwiązania jest prostota i możliwość użycia this
jako targetu.
function addEvent( obj, type, fn )
{
if (obj.addEventListener)
obj.addEventListener( type, fn, false );
else if (obj.attachEvent)
{
obj["e"+type+fn] = fn;
obj[type+fn] = function() { obj["e"+type+fn]( window.event ); }
obj.attachEvent( "on"+type, obj[type+fn] );
}
}
Moja wersja poniżej jest trochę zmodyfikowana i umożliwia przesyłanie do funkcji parametró. Nie jestem guru javascript więc kilka rzeczy może dziwić. Po pierwsze funkcja wywoływana musi mieć dodatkowy parametr, który określa rodzaj zdarzenia (potrzebne np. do onclick, żeby anulować domyślne zdarzenie dla elementu <a .../>). Drugi to nietypowy sposób przesyłania parametrów. Funkcja i przykład wywołania poniżej. Wszystko działa w IE6/Win, Firefox/Win, Opera/Win - informacje o innych mile widziane.
function addEventParams( obj, type, fn, p ){
obj["e"+type+fn] = fn;
if (obj.addEventListener){
eval( 'obj.addEventListener( type, function(event){obj["e"+type+fn](event, ' + p + ')}, false );' );
} else if (obj.attachEvent){
obj[type+fn] = function() { eval ( 'obj["e"+type+fn](window.event, ' + p + ');' ); }
obj.attachEvent("on"+type, obj[type+fn]);
}
}
//wywołanie
function pokaz(e, a, b){
//e to jest dodatkowy parametr określający zdarzenie
alert(a+b);
(e.preventDefault) ? e.preventDefault() : (e.returnValue = false);//anuluj domyślną akcję
}
a = document.getElementById("moj_link");
addEventParams(a, "click", pokaz, '"to jest ", "test"')