Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    inserire in un DIV del codice Javascript tramite innerHTML

    Ciao a tutti,

    il mio quesito a mio parere non è di facile soluzione.

    In questi giorni sto modificando il mio CMS o meglio le mie classi PHP per effettuare la navigazione tra le pagine attraverso AJAX anziche col metodo tradizionale.

    Prima stampavo tramite PHP il codice Javascript che mi occorreva, adesso oltre a funzioni Javascript 'globali', avrei la necessità di stampare delle funzioni Javascript nel div che aggiorno ogni volta che effettuo una chiamata AJAX tramite la proprietà innerHTML.

    E' proprio come prima con la differenza che anzichè stampare Javascript ricaricando la pagina, lo stampo senza ricaricare.

    Un esempio chiarisce più di mille parole, se faccio:

    document.getElementById('mioDiv').innerHTML
    ='<script type="text/javascript">alert("ciao");</script>';

    non si eseguirà l'alert e nemmeno se ci scrivo una funzione risulterà definita...

    Ecco volevo sapere se esiste un modo per far si che il browser 'esamini' questi pezzi di codice Javascript che vengono inseriti dinamicamente.

    Vi sarei molto grato se qualcuno mi aiutasse

    grazie mille
    Michele Castellucci
    Sviluppatore Web del Consorzio CottonBit
    Consorzio Cottonbit
    Risorse per la programmazione
    Dire Fare Programmare!

  2. #2
    Ho trovato una soluzione.

    Più che altro è un escamotage.

    Allora per far eseguire il codice Javascript ritornato da una chiamata ajax, semplicemente taglio l'HTML ritornato dalla richiesta in corrispondenza dei tag <script> ed eseguo l'eval di questi pezzi di codice.

    Semplice ma geniale no?

    Il problema è che non funziona all 100%, ovverto se faccio l'eval di una funzione e poi l'eval di una chiamata a tale funzione, funziona correttamente (scusate il gioco di parole).

    Se invece la chiamata alla funzione (passata ad eval) la faccio alla pressione di un tasto o ad un qualsiasi altro evento, non funziona. :master:

    Comunque sono riuscito a risolvere tutti i miei problemi anche se sono stato costrestto ad inserire la funzione di validazione dei form nell'attributo onsubmit del tag <form> per il motivo appena spiegato.

    Ciao
    Michele Castellucci
    Sviluppatore Web del Consorzio CottonBit
    Consorzio Cottonbit
    Risorse per la programmazione
    Dire Fare Programmare!

  3. #3
    ripensandoci...
    or mi sembra chiaro perchè se faccio l'eval di alcune funzioni non me le veda come definite se le richiamo esternamente

    Semplicemente perchè l'eval lo faccio all'interno della funzione quindi se richiamo subito le funzioni che ho valutato funziona ma dopo che esco dalla funzione, l'ambito dlel codice valutato finisce.

    Michele Castellucci
    Sviluppatore Web del Consorzio CottonBit
    Consorzio Cottonbit
    Risorse per la programmazione
    Dire Fare Programmare!

  4. #4
    Non vorrei sbagliarmi, ma credo che tu debba definire le funzioni non così:

    codice:
    function ciao(messaggio) {
    alert(messaggio);
    }
    ma così:
    codice:
    ciao=function(messaggio) {
    alert(messaggio);
    }

  5. #5
    Mettere le funzioni in delle variabili in modo che quando esco dalla funzione che fa l'eval siano sempre valide....

    hai ragione!

    Grazie non ci avevo pensato, adesso funziona tutto perfettamente
    Michele Castellucci
    Sviluppatore Web del Consorzio CottonBit
    Consorzio Cottonbit
    Risorse per la programmazione
    Dire Fare Programmare!

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 © 2024 vBulletin Solutions, Inc. All rights reserved.