Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1

    event.preventDefaul & event.stopPropagation - Spiegazioni

    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

  2. #2
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    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

  3. #3
    Ti ringrazio per la risposta, sei stato molto preciso.
    Avrei delle domande..
    Un esempio di preventDefault può essere questo:

    codice:
    <HTML>
    <HEAD></HEAD>
    <BODY>
    Clicca qui
    <script type="text/javascript">
    document.getElementById("ciao").preventDefault();
    </script>
    </BODY></HTML>
    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ì?

    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

  4. #4
    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?

  5. #5
    UP

  6. #6
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    preventDefault e' un metodo dell' oggetto event
    http://javascript.html.it/articoli/l...ser-ed-esempi/

  7. #7
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    questa cosa non può funzionare:
    codice:
    document.getElementById("ciao").preventDefault();
    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").onclick = function(e) {
       /* fai quello che devi fare */
       e.preventDefault()
    }
    consulta anche
    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)

  8. #8
    Grazie per le risposte.
    Ho capito ciò che intendete..ma come mai neanche cn questo semplicissimo esempio funziona?

    codice:
    <HTML>
    <HEAD></HEAD>
    <BODY>
    LINK
    <script type="text/javascript">
    link=document.getElementById("link");
    link.onclick=function(){
                                        event.preventDefault();
                                       };
    </script>
    </BODY>
    </HTML>
    Cosa c'è di sbagliato? L'azione default di A è href no? Quindi con questo codice lo href dovrebbe essere annullato no?

  9. #9
    UP

  10. #10
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    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

    codice:
    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>
    nb: la variabile non puo' chiamarsi come un id o name di un elemento
    (indovina qual e' il browser a cui darebbe piu' fastidio?)

    ciao

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.