Ciao a tutti
Volevo solo domandare questi 2 eventi cosa significa, cosa servono e se mi potete fare degli esempi pratici. Chiedo scusa ma non li ho mai capiti..e penso che sia il momento di farlo.
Grazie mille
Marco
Ciao a tutti
Volevo solo domandare questi 2 eventi cosa significa, cosa servono e se mi potete fare degli esempi pratici. Chiedo scusa ma non li ho mai capiti..e penso che sia il momento di farlo.
Grazie mille
Marco
preventDefault - blocca l' esecuzione dell' azione predefinita per l' elemento che ha scatenato l'evento: un link al click esegue quanto presente in href, un input di tipo submit al click invia il form che lo contiene
stopPropagation/cancelBubble - gli eventi risalgono l' alberatura xhtml, questa si chiama fase di bubbling, come le bollicine in una bevanda gassata
lo scenario e':
- un div ha un onclick settato
- il div contiene un link con un onclick settato
click sul link = scatta l' onclick del link e dopo scatta pure l' onclick sul div
a meno che, appunto, l' onclick sul link non esegua lo stopPropagation
il preventDefault non ferma il bubbling
Ti ringrazio per la risposta, sei stato molto preciso.
Avrei delle domande..
Un esempio di preventDefault può essere questo:
In questo caso se io faccio click sul "Clicca qui" non succederà nulla in quanto l'azione predefinita (ossia lo href, il collegamento alla pagina ciao.html") è stata bloccata. E' giusto così?codice:<HTML> <HEAD></HEAD> <BODY> Clicca qui <script type="text/javascript"> document.getElementById("ciao").preventDefault(); </script> </BODY></HTML>
Per quanto riguarda lo stopPropagation viene utilizzato solo quando ci sn degli eventi javascript annidati tra loro..giusto? E scusami la domanda..ho visto che dopo lo stopPropagation hai messo uno slash con cancelBubble..cos'è quest'ultimo? Perchè viene chiamato in modo differente da stopPropagation? Me ne vado per un'idea..uno è per i browser che seguono le direttive W3C e l'altro è per Internet Explorer?
Grazie mille per le risposte.
Marco
Scusami il doppio post..volevo dirti che ho fatto varie prove con il codice che ho postato sopra e il collegamento non si annulla..cosa ho sbagliato?
preventDefault e' un metodo dell' oggetto event
http://javascript.html.it/articoli/l...ser-ed-esempi/
questa cosa non può funzionare:
preventDefault è un metodo associato ad un evento, che senso ha chiamarlo come metodo (inesistente) direttamente sul nodo del DOM? devi bloccare un evento, non un nodo.codice:document.getElementById("ciao").preventDefault();
consulta anchecodice:document.getElementById("ciao").onclick = function(e) { /* fai quello che devi fare */ e.preventDefault() }
https://developer.mozilla.org/en/DOM...preventDefault
Vuoi aiutare la riforestazione responsabile?
Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)
Grazie per le risposte.
Ho capito ciò che intendete..ma come mai neanche cn questo semplicissimo esempio funziona?
Cosa c'è di sbagliato? L'azione default di A è href no? Quindi con questo codice lo href dovrebbe essere annullato no?codice:<HTML> <HEAD></HEAD> <BODY> LINK <script type="text/javascript"> link=document.getElementById("link"); link.onclick=function(){ event.preventDefault(); }; </script> </BODY> </HTML>
confronta con quanto ha postato fcaldera, ti sembra uguale?
(ri?) leggi con molta attenzione l' articolo che ti ho postato io, spiega praticamente tutto quello che c'e' da sapere
nb: la variabile non puo' chiamarsi come un id o name di un elementocodice:LINK <script type="text/javascript"> mioLink=document.getElementById("link"); mioLink.onclick=function(e){ if(!e) var e=window.event; alert('clicked'); if(e.preventDefault) e.preventDefault(); // resto del mondo else e.returnValue=false; // IE }; </script>
(indovina qual e' il browser a cui darebbe piu' fastidio?)
ciao