Newsgroup: it.comp.lang.javascript
Titolo: distinguere onclick e ondblclick

In <elemento> debbo specificare entrambi gli eventi onclick e ondblclick,
contemporaneamente.
Quindi a seconda che accada il primo o il secondo evento devo eseguire due
function differenti.
Es.
<elemento onclick="pippo();" onDblClick="pluto();">
function pippo() {
    alert("pippo");
}
function pluto () {
    alert("pluto");
}
In questo modo quando faccio doppio click sull'elemento mi si attiva sia
pippo() che pluto().
Anzi,  la funzione pippo(); viene eseguita due volte.
Che si puo' fare per fa eseguire pippo() su  click e pluto() su doppio
click?
Ciao,
--Gabriele

 click?
Dalle  numerose risposte che ho ricevuto :-) deduco che la cosa
probabilmente non si puo' fare.
Su google non trovo nulla... qua sul NG... ancora niente.
Il sospetto che non si riescano a distinguere i due eventi è più che
fondato... a questo punto.
--Gabriele

 fondato... a questo punto.
Sono orami disperato, credo di essermi letto di tutto e di piů in proposito,
ma nulla di fatto.
ZERO, tu che il piů
preparissimo :-)
fichissimo :-))
competentissimo :-D
saggissimo... :-\
possibile che non ci sia nulla da fare?
Ciao,
--Gabriele

 possibile che non ci sia nulla da fare?
Temo di no.
Intanto, anche se credo tu l'abbia fatto, leggiti le specifiche w3c in 
proposito:
http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/events.html
C'e' proprio un esempio chiarificatore, che riporto qua sotto:
As an example, a "double-click" on a mouse device will produce the 
following events (the value of UIEvent.detail is indicated in 
parenthesis):
   1. {"
http://www.w3.org/2001/xml-events
", "mousedown"} (1)
   2. {"
http://www.w3.org/2001/xml-events
", "mouseup"} (1)
   3. {"
http://www.w3.org/2001/xml-events
", "click"} (1)
   4. {"
http://www.w3.org/2001/xml-events
", "mousedown"} (2)
   5. {"
http://www.w3.org/2001/xml-events
", "mouseup"} (2)
   6. {"
http://www.w3.org/2001/xml-events
", "click"} (2)
Come vedi, l'evento ondblclick fa scatenare tutto questo putiferio 
(giustamente, si potrebbe anche ammettere).
Questo significa che se tu associ una funzione SOLO al dblclick, non ci 
son problemi, ma se tu assegni anche qualcun'altro dei sopracitati 
event-handler, ti vengono scatenati ed invocati nell'ordine descritto.
Avendo tu, assegnato solo l'onclick, oltre l'ondblclick, ti ritrovi:
   1. -
   2. -
   3. {"
http://www.w3.org/2001/xml-events
", "click"} (1)
   4. -
   5. -
   6. {"
http://www.w3.org/2001/xml-events
", "click"} (2)
E su questo ci puoi fare ben poco, per quanto ne so.
Puoi provare a "giocare" col detail (che definisce negli eventi di tipo 
"mouse" il numero di click sequenziali su un determinato oggetto), ma 
alemeno un'invocazione della funzione associata al singolo click ce 
l'hai, prima del secondo.
Solitamente non si dovrebbero definire funzioni su click/dblclick 
esclusive, nelle interfacce. E' cattiva progettazione.
Classico esempio: Il singolo click seleziona un oggetto, il doppio 
click esegue una determinata azione sull'oggetto in questione.
Un suggerimento che ti posso dare, se proprio devi utilizzare un 
interfaccia del genere, e' quello di separare gli event-handler nel 
DOM, in modo da mettere l'ondblclick su un elemento, l'onclick su un 
altro, e "stopparne" la propagazione.
Oppure, quella di settare un timer prima di "decidere" il tipo di 
evento che e' stato invocato.
Se poi scopri altri approcci, fammi un fischio.
-- 
C'ya,
  ZER0 :: coder.gfxer.webDesigner();
"When you have eliminated the impossible, whatever remains,
however improbable, must be the truth." (S.H.)