jesteś w: Główna > javascript > funkcje > javascript: addEvent()
Ostatnia aktualizacja tej strony: 2006-10-25, 21:10:25

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"')

Menu

Działy:

Quick start:

Inne:

animacje Flash

Diablo 2: