Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it L'avatar di nourdine
    Registrato dal
    Nov 2005
    Messaggi
    1,130

    doppio evento non cancellabile su elemento dom

    carissimi ...

    ho una domandina per gli esperti. Vi spiego la situazione:

    ecco il codice semplificato del mio problema:

    codice:
    function Foo(id) {
       
       var dom = document.getElementById(id);
       
       function clickHandler() {
          console.log("hello")
       }
       
       this.init = function() {
          dom.addEventListener("click", clickHandler, false);
       }
    }
    var o1 = new Foo("xxx");
    o1.init();
    
    delete(o1); // cancellazione dell'oggetto
    
    var o2 = new Foo("xxx");
    o2.init();
    quando o1 viene deferenziato il listener sull'oggetto dom wrappato rimane!! infatti come vedete all'onclick esegue 2 log e non uno solo come mi aspettavo. Come si puo' fare a ripulire completamente un oggetto dom da eventi e ecc?

    ho provato a usare:

    codice:
    dom.removeEventListener("click", clickHandler, false);
    all'interno di init ma niente! il doppio log rimane

  2. #2
    Utente di HTML.it L'avatar di nourdine
    Registrato dal
    Nov 2005
    Messaggi
    1,130
    nobody?

  3. #3
    codice:
    <div id="xxx">ciao</div>
    
    <script type="text/javascript">
    function Foo(id) {
       
       var dom = document.getElementById(id);
       
       function clickHandler() {
          alert("hello")
       }
       
       this.init = function() {
          dom.addEventListener("click", clickHandler, false);
       }
    }
    var o1 = new Foo("xxx");
    o1.init();
    
    dom.removeEventListener('click', o1.clickHandler, false);/*cancellazione dell' EVENTO assegnato dall' oggetto o1 a dom, prima di cancellare o1 o dom lo eredita*/
    o1=null; // cancellazione dell'oggetto
    
    var o2 = new Foo("xxx");
    o2.init();
    </script>

  4. #4
    Utente di HTML.it L'avatar di nourdine
    Registrato dal
    Nov 2005
    Messaggi
    1,130
    avevi fatto a pugni con lo scope un pò. cho dato una ripulita, grazie comunque:

    Codice PHP:
    <div id="xxx">ciao</div>

    <
    script type="text/javascript">
    function 
    Foo(id) {
       
       var 
    dom document.getElementById(id);
       
       function 
    clickHandler() {
          
    console.log("hello")
       }
       
       
    this.init = function() {
          
    dom.addEventListener("click"clickHandlerfalse);
       }
       
       
    this.resetDom = function() {
          
    dom.removeEventListener('click'clickHandlerfalse);
       }
    }

    var 
    o1 = new Foo("xxx");
    o1.init();

    /* cancellazione dell' EVENTO assegnato dall' oggetto o1 a dom, prima di cancellare o1 o dom lo eredita */
    o1.resetDom();

    var 
    o2 = new Foo("xxx");
    o2.init();
    </script> 

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.