Newsgroup: it.comp.lang.javascript
Titolo: onmouseover su immagine

Ciao a tutti,
Piccola dritta please.
Ho un oggetto html di tipo image, se l'utente col cursore del mouse
rimane fermo per piu' di 2-3 secondi su un determinato punto x,y
scatta l'evento che carica, utilizzando ajax, uno script.
Non riesco a capire/trovare un esempio di come creare la funzione che
controlla ogni tot secondi se il cursore e' fermo su un determinato
punto dell'immagine.
Grazie!

 punto dell'immagine.
Non devi controllare se il cursore è fermo, bensì se si muove.
All'onmouseover sull'immagine se rientra nel punto x e y vai a
impostare un timeout con un tempo di 2000 o 3000 millisec.
Se entro quel tempo il mouse si muove ancora, vai a cancellare
il timeout.
Puoi usare l'oggetto event, per recuperare le coordinate x e y
del mouse durante l'onmouseover.
-- 
~ Il lavoro è prezioso. Non essere egoista! Lascialo agli altri!


Esatto.
Solo che nella funzione setTimeout("onPointStop()", 3000); devo
passare l'event.
Nel senso, se chiamo la funzione sull'onClick, tutto funziona, ma
usando setTimeOut, l'event naturalmente non esiste.
Come fare?

 passare l'event.
No che non lo devi passare. Rileggi bene quel che ti ho scritto, tu stai
ancora ragionando seguendo il tuo approccio, ma ti ho detto che non devi
seguire quella strada.
Se non sono stato sufficientemente chiaro, provo a spiegarmi meglio.
-- 
"Se c'č qualcosa di piů importante del mio ego su questa nave,
la voglio catturata e fucilata."


Scusami tu, sono stato poco chiaro io.
L'immagine (cartografica creata da mapserver) e' composta da layer
sovrapposti.
Ci sono svariati punti e non conosco a priori le posizioni x,y,
percio' il metodo di check e' se il mouse si ferma per alcuni secondi
su un determinato punto, salvandomi x,y ad ogni timeout.
Se x_old==x e y_old=y scatta l'evento e chiamo lo script ajax.
Mi sono spiegato meglio?
Grazie!

 Grazie!
De nada.
-- 
~ Neanche il futuro e' piu' quello di una volta.


Ciao,
Se utilizzo questo codice:
obj_mainmap.onmouseover = function (event)
{
    if(intervalID)
    {
        clearInterval(intervalID);
    }
    intervalID = setInterval("getXY(event)", 3000);
}
Passo alla funzione getXY l'event, ma in Mozilla quest'ultimo mi da
errore in quanto e' undefined.
Idea?
Thanks

> le coordinate (..) Qui, l'event ce l'hai e quindi puoi recuperarle.
Quindi:
var timeoutID = null;
function myfunction(){
	alert("Do Something");
}
obj_mainmap.onmouseover = function( evt ){
	evt = evt||window.event||null;
	if ( timeoutID ){
		clearTimeout( timeoutID );
		timeoutID = null;
	}
 
	if ( evt!= null ){
		var 	x = evt.clientX,
			y = evt.clientY;
		if ( x == 320 && y == 200 )
			timeoutID = setTimeout(myfunction, 3000);
	}
 
}
320 e 200 sono ovviamente numeri fittizzi, servono per illustrarti il
procedimento. Anche clientX e clientY non è detto siano le coordinate
che t'interessano: l'oggetto event ne ha parecchie, e alcune non sono
uguali in IE e in Firefox. Devi vedere te, quali sono quelle ch fanno
al caso tuo (ciclandoti l'oggetto event o spulciandoti le reference).
-- 
~ "Il semble que la perfection soit atteinte non quand il n'ya plus
rien à ajouter, mais quand il n'ya plus rien à retrancher"
(A. de Saint-Exupéry)