Newsgroup: it.comp.lang.javascript
Titolo: window.event e flash

Salve!
se uso i seguenti comandi in una pagina:
if (!e) var e = window.event;
alert(e.type);
Ad ogni evento corrisponde un l'apertura di un alert corrispondente 
all'evento!
Se ad esempio clicco su un immagine, un testo, uno spazio vuoto, ecc...
mi viene sempre aperta una finestrella con la scritta onmousedown!
Perchè se ci metto un flash non funziona?
Qualcuno sa dirmi come fare a farmi avere lo stesso messaggio anche 
cliccando su un flash enbedded qualsiasi?
Grazie
Mk

Mi correggo lo fa con i flash, ma non con i video di youtube ad esempio!
Qualcuno sa perchè?
e come posso risolvere?
Grazie
Mk

 Perchè se ci metto un flash non funziona?
Perché è un plugin. È come se fosse un'applicazione a sè stante, ma
"inserita" nella pagina. Questo significa che i click possono venir
gestiti dall'applicazione e non rispediti al browser. Dipende tutto
da che tipo di browser usi, da che tipo di plugin, e anche dal tipo
di contenuto del plugin stesso.
-- 
"When you have eliminated the impossible, whatever remains, however
improbable, must be the truth."

ho notato che solo sul player di youtube bisogna fare doppio click, 
mentre sugli altri player basta un click molto strano, ora la mia domanda 
è la seguente, ho il seguente script:
function take(evt){
			document.onmousedown = null;
			if(!evt) var evt = window.event;
			var oGet = evt.target;
			if(oGet.tagName == 'IMG' ||    
			oGet.firstChild.tagName == 'IMG'){
				alert ('ok1');
			}
			else if(oGet.tagName == 'EMBED'){
				alert ('ok');
			}
			else{
				alert ('ok3');
			}
alert ('ok4');
document.body.style.cursor='auto';
document.onmousedown = null;
}
Qualcuno sa spiegarmi perchè se clicco su un' imamgine giustamanete mi fa 
alert ok1 e ok4, mentre se clicco su un testo qualsiasi mi fa ok3 e ok4 
mentre se clicco su un flash (quindi su un tag embed) non fa nulla?
ho provato a far un alert: alert(oGet.tagName); dopo la dichiarazione di 
oGet e mi restituisce correttamente come messaggio alert EMBED, ma non 
ok, ne tanto meno ok4 come se si bloccasse dopo l'alert! 
come mai?
grazie

 mentre se clicco su un flash (quindi su un tag embed) non fa nulla?
Probabilmente perché il tag embed non ha un nodo figlio. Quindi,
quandi provi a vedere se il tagName del nodo figlio è IMG, ti va
in errore. Prova a usare Firefox e controllare l'error console e
vedrai che ti sarà parecchio di aiuto.
La funzione andrebbe rivista in questo modo:
function take(evt){
	evt = evt||window.event;
	var sender = evt.target||evt.srcElement||null;
	if (!sender)
		return;
 
	if (sender.tagName == "IMG" || (sender.firstChild && 
sender.firstChild.tagName == "IMG"){
		alert("ok1");
	} else if (sender.tagName == "EMBED"){
		alert("ok");
	} else {
		alert("ok3");
	}
}
Andrebbe poi visto dove associ questa funzione. Dovresti fare:
window.onload = function(){
	document.body.onmousedown = take;


genio! l'errore era proprio il controllo sbagliato sul child!
Ora mi chiedo è non possibile in nessuna maniera intercettare il click 
prima che il flash prenda il controllo?
Il problema non è solo per il doppio click su youtube, ma anche su siti 
nei quali si usano le api di youtube come 
http://www.bestofyoutube.com/
 
in questi casi 1 click, fa partire prima il video e se il video è in play 
1 click apre il link della pagina originale del video.
Io vorrei semplicemente filtrare tale comportamento, penso che però 
questi comportamenti siano decisi dal flash ma possibile che non c'è alto 
modo? stavo spulciando tra tutti gli event disponibili, ma nonho trovato 
nulla di utile!
Grazie mille

faccio un esempio, ad esempio per acquisire l'evento (click su un link) 
vado a inserire dentro ogni link "setAttribute('onclick','return false')"
si potrebbe fare una cosa simile su flash prevenendo quindi la presa del 
controllo dell'evento dal flash?
Grazie