Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    776

    Window.open aggiungere evento su finestra secondaria

    Ciao a tutti,

    sto impazzendo con un script, sicuramente mi sfugge qualche cosa, ma non riesco a capire quale!

    Dato questo script:

    codice:
    window.onload=function(){
        document.getElementById("abrirFormulario").addEventListener("click",abrirFormulario);
    }
    
    
    
    
    function abrirFormulario(){
    var nuevaVentana=window.open("formulario.html","miForm","manubar=no,toolbar=no,scrollbars=no,resizable=yes,top=200,left=200,width=450,height=450");
    nuevaVentana.document.getElementById("enviar").addEventListener("click",scriviDati);
    }
    
    
    function scriviDati(){
    alert("nuova Ventana");
    }
    Nella pagina principale ho semplicemente un bottone con id="abrirFormulario".
    Dopo il caricamento della pagina (window.onload), viene aggiunto un Listener sul bottone sopra menzionato.
    Cliccando sul bottone in questione viene lanciata la funzione "abrirFormulario()" che effettivamente mi apre una nuova finestra caricando la pagina "formulario.html", all'interno della quale è presente un altro bottone che possiede un id="enviar".

    Se io però cerco di riferirmi alla pagina che ho appena aperto e cerco di aggiungere l'evento ascoltatore di questo bottone all'interno della stessa funzione con la riga di codice:
    nuevaVentana.document.getElementById("enviar").add EventListener("click",scriviDati);
    ...mi viene presentato l'errore:
    cannot read property addEventListener of Null

    In che cosa sbaglio?

    Grazie,
    Roberto
    Ultima modifica di robynosse; 23-09-2014 a 11:33

  2. #2
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Sempre che abbia capito non devi riferiti alla variabile nuevaVentana (che non credo neanche che serva in questo contesto) visto che il pulsante enviar è dentro la pagina formulario.html ti basta fare cosi: document.getElementById("enviar").addEventListener ("click",scriviDati); chiaramente anche la funzione scriviDati dovrà essere nella stessa pagina formulario, nel caso invece che sia nella pagina madre prova cosi:document.getElementById("enviar").addEventLis tener("click",opener.scriviDati);
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    776
    Ciao Andrea,

    innanzi tutto ti ringrazio della risposta.
    Purtroppo però entrambe le due soluzioni non funzionano, l'errore è:
    Uncaught TypeError: Cannot read property 'addEventListener' of null
    abrirFormulario

    Per completezza posto le due pagine html, pagina principale, dove si fa riferimento allo script sopra riportato.
    codice HTML:
    <!DOCTYPE html>
        <html lang="es">
          <head>
            <meta charset="utf-8">
            <script src="javascript.js" type="text/javascript">
    </script>
            <title>Ventanas</title>
                  </head>
          <body>
                <button id="abrirFormulario">Abrir ventana Formulario</button>
              </body>
        </html>
    Pagina formulario.html
    codice HTML:
    <!DOCTYPE html>
        <html lang="es">
          <head>
            <meta charset="utf-8">
    
            <title>Formulario</title>
              </head>
          <body>
                <input id="nombre" type="text" placeholder="inserta tu nombre">
                <input id="email" type="email" placeholder="insera tu email">
                <button id="enviar">Invia</button>
          </body>
        </html>
    Grazie,
    Roberto

  4. #4
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Cliccando sul bottone in questione viene lanciata la funzione "abrirFormulario()" che effettivamente mi apre una nuova finestra caricando la pagina "formulario.html"
    qui sembra che il primo button andasse e il problema fosse nel secondo button, ora non funziona neanche il primo, non so che dirti prova a mettere tutto online se ho ispirazione e voglia nel pomeriggio me lo studio
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    776
    Faccio il possibile per metterlo da qualche parte questo pomeriggio!

    ...comunque, quando puoi........

    Grazie,
    Roberto

  6. #6
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    776
    Quote Originariamente inviata da cavicchiandrea Visualizza il messaggio
    qui sembra che il primo button andasse e il problema fosse nel secondo button, ora non funziona neanche il primo, non so che dirti prova a mettere tutto online se ho ispirazione e voglia nel pomeriggio me lo studio
    Ciao andrea,

    l'ho pubblicato a questo indirizzo:
    http://testroberto.it.mialias.net/
    utente:
    testro512
    password:
    Obg1GSpV

    Grazie,
    Roberto

  7. #7
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    La "soluzione" più rapida (e forse l'unica) e mettere l'evento click direttamente in linea nel button enviar <button id="enviar" onclick="opener.scriviDati()">Invia</button> e togliere document.getElementById("enviar").addEventListener ("click",opener.scriviDati); dalla funzione abrirFormulario()
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  8. #8
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    776
    Quote Originariamente inviata da cavicchiandrea Visualizza il messaggio
    La "soluzione" più rapida (e forse l'unica) e mettere l'evento click direttamente in linea nel button enviar <button id="enviar" onclick="opener.scriviDati()">Invia</button> e togliere document.getElementById("enviar").addEventListener ("click",opener.scriviDati); dalla funzione abrirFormulario()
    Ciao Andrea,

    in effetti così funziona, questo significa che da un oggetto finestra non è possibile aggiungere un Listener su un elemento di una nuova finestra, giusto?
    ...mi piacerebbe capire il perché ma non riesco a trovare la documentazione in merito!
    Forse, ragionandoci ha la sua logica, perché quando io carico la finestra
    var nuevaVentana=window.open(...);
    e successivamente aggiungo l'evento nella stessa funzione, la pagina nuova(formulario.html) non si è ancora caricata, dovrei controllare l'evento load della nuova pagina in questione e poi aggiungere il Listener, giusto?
    Ma sarebbe possibile farlo senza aggiungere javascript alla pagina formulario.html?

    Grazie per il tempo che mi hai dedicato!

    Roberto
    Ultima modifica di robynosse; 23-09-2014 a 20:23

  9. #9
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    776
    Ce l'ho fatta:

    così funziona:
    codice:
    var nuevaVentana;
    
    
    window.onload=function(){
        document.getElementById("abrirFormulario").addEventListener("click",abrirFormulario);
    }
    
    
    
    
    function abrirFormulario(){
    nuevaVentana=window.open("formulario.html","miForm","manubar=no,toolbar=no,scrollbars=no,resizable=yes,top=200,left=200,width=450,height=450");
    nuevaVentana.onload=function(){
    nuevaVentana.document.getElementById("enviar").addEventListener("click",scriviDati);
    }
    }
    
    
    function scriviDati(){
    alert("nuova Ventana");
    }

    Grazie ancora!

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.