Newsgroup: it.comp.lang.javascript
Titolo: attaccare un event handler

Ho questo codice:
<input id="input" ../>
function send() {
  alert(this.event);
}
var input = document.getElementById("input");
input.onkeyup = send;
mi stampa "undefined" quando premo un tasto.
Come faccio a ottenere il referimento dell'evento nel modo corretto? 

 }
In IE event è una proprietà di window e nel tuo codice this non fa
riferimento a window.
Ma a te interessano anche gli altri browser? Perché così non li aiuti...
(magari sei in una intranet e giustamente non te ne curi)
-- 
Ro!


-- 
Il 26 dicembre 2004 Chuck Norris ha fatto il suo primo tuffo nel Pacifico.

 ha scritto nel messaggio 
news:i3gg2ipjr2pb.1rdc91i31cu6q$.dlg@40tude.net...

a quanto pare onkeyup e' una funzione con parametro:
function send(e) {
  alert(e);
}
cosi' funziona (almeno sotto FF 1.5).

 cosi' funziona (almeno sotto FF 1.5).
Sě questa č la strada intrapresa da FF (e predecessori), ma l'hai provata
con IE?
In pratica, devi far convivere le due soluzioni:
function send(e) {
	var _evt=e||event;
	alert(_evt);
}
-- 
Ro!

 }
perché vuoi aggiungere una variabile?
-- 
Chuck Norris non porta l'orologio. Decide lui che ora è.

 ha scritto nel messaggio 
news:wke0jnvxeey5$.ypgf8ykjdzxm$.dlg@40tude.net...

Non l'avevo provato.
P.S
Evvai finalmente anche io uso la doppia pipe! 

 perché vuoi aggiungere una variabile?
Mi sembra più leggibile: tutto qui. Tu come fai?
-- 
Ro!

 Evvai finalmente anche io uso la doppia pipe!
Non hai mai fatto un or (non vb)?
-- 
Ro!


Non in Javascript...essendo da poco che lo uso.
Comunque con Firefox la console segnala un errore strano quando si esegue 
l'event handler:
Errore: [Exception... "'Permesso negato per impostare la proprietą 
XULElement.selectedIndex' when calling method: 
[nsIAutoCompletePopup::selectedIndex]"  nsresult: "0x8057001e 
(NS_ERROR_XPC_JS_THREW_STRING)"  location: "JS frame :: 
file:///C:/Documents%20and%20Settings/AGORI/Desktop/gioco.html :: send :: 
line 9"  data: no]
File sorgente: 
file:///C:/Documents%20and%20Settings/AGORI/Desktop/gioco.html
Riga: 9
Il codice di prova e' questo:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<body>
<form>
 <input type="text" value="" id="input"/>
</form>
<script>
function send(e) {
  alert(e||event);
}
var input = document.getElementById("input");
input.onkeyup = send;
</script>
</body>
</html> 

 XULElement.selectedIndex' when calling method:
ZER0 mi parlò tempo fa di un bug di firefox riguardante gli event handler
sui campi di input (o cose simili, non ricordo bene)... forse si tratta
della stessa cosa, risolvibile specificando autocomplete="off" nel tag
input. Prova e vedi se è così.
-- 
Nando [?]
Apostolo della Prova


Grazie era quello! 


-- 
Se pronunciate la combinazione di parole "il punto debole di Chuck Norris
č...", vi arriva un calcio rotante dal nulla, tanto per chiarire.

 Riga: 9
Mi ha sorpreso questa cosa, su Google ho trovato che autocomplete="off" (da
aggiungere all'input) evita la cosa, ma a quanto ho letto è un bug di
Firefox.
Magari qualcun altro nel ng ne sa di più...
-- 
Ro!


Scusa Zero, ma questi link cosa sono e come si usano? 


-- 
Chuck Norris č in grado di scalare le montagne in bicicletta. Su una ruota
sola. Senza mani.


Ovvero:
function _GLOBAL_CONTEXTMENU_CALLBACK(evt){
	evt=evt||event||null;
[...]
Mi è sempre sembrato più leggibile il mio (che usa una var esterna per
"accontentare" le due modalità). Nel caso si fa sempre a tempo a
"riallinearsi".
-- 
Ro!

 input. Prova e vedi se è così.
Ah ecco, qualcuno nel ng già lo avevo trovato :)
-- 
Ro!

 Mi è sempre sembrato più leggibile il mio 
E' una questione di best practices.
E' lo stesso "metodo" suggerito dalla client guide di JS per la gestione dei
valori di default per i parametri non forniti (ovviamente laddove i parametri
non possono ammettere falsità logiche, come in questo caso).
Laddove, in php faresti qualcosa come:
	function fun(evt = event){..}
per intenderci. Poi all'interno della funzione utilizzi sempre "evt" come
variabile, in quanto essa rappresenta il parametro.
-- 
Chuck Norris ha fatto il suo primo milione di dollari all'età di sei anni
grazie alla fatina dei dentini. I denti che lasciava sotto il cuscino però non
erano i suoi.

 Ah ecco, qualcuno nel ng già lo avevo trovato :)
Una breve ricerca sul NG te l'avrebbe confermato. E' un bug noto, comunque.
-- 
Chuck Norris usa un serpente a sonagli come preservativo.

 per intenderci.
(nota: che ho scoperto esistere anche in Python per quel pochissimo che
l'ho guardato).
-- 
Ro!

 l'ho guardato).
Si, l'ho visto anche io. Ho preferito utilizzare un parallelo in PHP perché ti
ho visto citarlo ogni tanto, mentre in Python sapevo che gli avevi dato una
sbirciata ma non sapevo fin dove.
-- 
Quando ordina un happy meal da McDonald's, Chuck Norris mangia prima il
giocattolo.