[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