Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it L'avatar di giudf
    Registrato dal
    Jun 2006
    Messaggi
    162

    removeElementListener ?!?

    Ciao ragazzi,
    ho l seguente problema:
    dato che la sintassi del'addElementListener è la seguente:

    object.addElementListener("click",funzioneDaEsegui re,booleano)

    e per rimuoverla sono costretto a fare:

    object.removeElementListener("click",funzioneDaEse guire,booleano)

    Siccome non posso passare i parametri alla funzione con questo sistema sono costretto a fare la funzione li per li in questo modo:

    img.addEventListener("mouseover",function(){c.remo veChild(img);
    rEMOVeVENTLISTENER?!?},false);

    La domanda è:

    Come faccio ad usare removeElementListener, all'interno di function ?!?
    Spero che qualcuno mi illumini, grazie

  2. #2
    Utente di HTML.it L'avatar di giudf
    Registrato dal
    Jun 2006
    Messaggi
    162

    Risolto

    Ho fatto da solo grazie

  3. #3
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    perche' il forum non sia solo un posto dove chiedere, ma anche dove condividere soluzioni,
    sei pregato di rendere pubblico anche come hai risolto il problema che hai descritto

  4. #4
    Utente di HTML.it L'avatar di giudf
    Registrato dal
    Jun 2006
    Messaggi
    162

    La mia soluzione

    Il problema era il seguente:
    addEventListener("click",function(){
    // All'interno posso richiamare tutti gli elementi senza passarli per parametro},false);

    A questo punto dato che la sintassi del
    removeElementListener(evento,funzioneChiamataDall' AddElementListener,false|true)

    Io non avevo alcun riferimento alla funzione in quanto l'avevo dichiarata li per li, d'altro canto affidarsi ad una funzione esterna, non permette il passaggio di parametri:

    addEventListener("click",funzioneEsterna,false);
    Da notare l'assenza di () dopo funzioneEsterna (quindi niente possibilità di passaggio par)

    Ho aggirato il problema semplicemente affidandomi si ad una funzione esterna (per non perdere la possibilità di rimuovere il listener) ma ho dichiarato una variabile globale
    var VariabileFunzioneEsterna
    e prima di richiamare l'addEventListener assegnavo alla VariabileFunzioneEsterna ciò che avrei dovuto passargli per parametro, ovviamente la variabile essendo globale sarà riconosciuta ed il problema è stato aggirato ! !

  5. #5
    Nel tuo caso non c'è ne bisogno:
    codice:
    obj.addEventListener("mouseover",function(){
      alert('prima volta');
      obj.removeEventListener("mouseover", arguments.callee, false)
    },false);

  6. #6
    Utente di HTML.it L'avatar di giudf
    Registrato dal
    Jun 2006
    Messaggi
    162

    mmm

    Sei sicuro che la soluzione sia funzionante anche se l'add ed il remove vengono chiamati in 2 funzioni diverse ?!? (Ho provato e nn mi funziona) ora cmq provo a smanettarci 1 altro pò visto che la soluzione che hai proposto te è molto + elegante della mia ! (Sperando di riuscire a farlo funzionare)

  7. #7
    Boh, a me funziona.
    codice:
    <html>
    <head>
    <title>Event</title>
    <script type="text/javascript">
    window.onload= function() {
    var obj = document.getElementById("obj");
    obj.addEventListener("mouseover",function(){
      alert('mouseover');
      obj.removeEventListener("mouseover", arguments.callee, false);
    },false);
    }
    </script>
    </head>
    <body>
    <div id="obj">PASSAMI SOPRA</div>
    </body>
    </html>
    PS:Ho notato però uno strano bug con Firefox mettendo l'addEventListener direttamente dentro il window.onload. Se per qualche fortuita coincidenza si tratta proprio della tua situazione puoi risolvere facilmente inserendo l'addEventListener dentro una funzione anonima:
    codice:
    //al posto di 
    window.onload = function() {
      //aggiungi listener...
    }
    
    //metti 
    window.onload = function() {
      (function() {
        //aggiungi listener
      })()
    }
    Non mi chiedere il perchè, anche perchè questo bug mi è capitato in una pagina e poi non sono più riuscito a riprodurlo

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.