[Java lista] Ajax Callback paraméter

Gergely Hodicska felho at avalon.aut.bme.hu
2009. Sze. 15., K, 12:17:21 CEST


Szia!


> function EZTNYOM_onclick() {
Nem tudom mennyire cél, hogy cross-browser működjön a cucc, de az event 
objektum csak IE alatt (bár lehet, hogy Opera is emulál ilyet) jön létre 
a window objektumban (itt találja meg, ha event-re hivatkozol), más 
böngészőkben az esemény kezelő paraméterként kapja meg.

>    event.which = 25; !!!!!   Az értékadás nem működik, illetve az eventben továbbra is nulla van...
>    event.modifiers = 24;  !!!!!   Az értékadás nem működik, illetve az eventben továbbra is nulla van...
Ez annyiban fura, hogy pont nem az IE-ben van which és modifiers, plusz 
szvsz ezek read only paraméterek. Ezenkívül neked ez nem is segítség, 
mert a which-ban a leütött karakter lenne, a modifiers pedig azt 
tartalmazza, hogy voltak-e módosítók lenyomva.

Egy cross-browser eseménykezelő kb. így néz ki:
function eventHandler(event) {
   var event = event ? event : (window.event ? window.event : null);
   if (event) {
     var target = event.target ? event.target : (event.srcElement ? 
event.srcElement : null);
     if (target) {
       var keyCode = event.charCode ? event.charCode : (event.keyCode ? 
event.keyCode : event.which);
       if (event.modifiers) {
         var alt = event.modifiers & Event.ALT_MASK;
         var ctrl = event.modifiers & Event.CONTROL_MASK;
         var shift = event.modifiers & Event.SCHIFT_MASK;
         var meta = event.modifiers & Event.META_MASK;
       } else {
         var alt = event.altKey;
         var ctrl = event.ctrlKey;
         var shift = event.shiftKey;
         var meta = false;
       }

       // matatas......
     }
   }
}
De még ez se minden, mert IE és egyéb böngészők között különbség van 
abban is, hogy nem mindegyik kezelő sül el mindig, van amikor korrigálni 
kell a billentyűkódot, máskép lehet a default viselkedést leállítani, 
esemény propagálást lelőni. Egy kis jópofa:
http://felho.hu/jsjezuska/proba.html

> Kérdésem: mivel a <span>-ból lenne pár darab, ezért szeretném valami azonosítóval megkülönböztetni őket. Jó ötletnek tűnt valamelyik event metódus módosítása, de ezek szerint halva született. Vagy mégsem?
Adj a span-eknek egy id attribútumot, majd ezt szed ki az event 
eseményből (a fenti szerint target.id), és ezt küld el a szerver oldal 
fele. Plusz lehet érdemes bevetned egy lightweight JS libraryt (pl. jQuery).


Üdv,
Felhő


További információk a(z) Javalist levelezőlistáról