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

    [AJAX] Eseguire javascript all'interno di pagina caricata tramite ajax

    Ragazzi scusate lo spam di questa mattina ( questo è il terzo post che apro ) ma sono in crisi.

    Allora ho una funzione ajax che carica tramite ( chiaramente ) innerHTML una pagina all'interno di un div.
    Fin qui tutto ok. Il mio problema è che all'interno della pagina che carico nel div ho bisogno di inserire un secondo javascript che esegua delle altre funzioni. Questo javascript è come se non ci fosse....

    La domanda è se sia possibile o meno caricare tramite ajax una pagina all'interno di un div che abbia a sua volta del codice javascript all'interno.

    Despite of my rage i'm still just a rat in a cage

  2. #2
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Ho provato una pagina di prova e sembra che funzioni con IE7, Firefox2 e Opera9.

    La pagina ha due pulsanti: il primo richiama ajax con del javascript, ed il secondo, una funzione presente nel javascript importato.

    Allora, il secondo pulstante fa:

    function Button2_onclick()
    {
    prova1();
    prova2();
    }

    dove prova1() e prova2() sono due funzioni importate tramite ajax:
    (con asp)
    Response.Write("x<script>function prova1(){alert('Questa è una prima funzione');}</script>z<script type=""text/javascript"">function prova2(){alert('Questa è una seconda funzione');}</script>u")


    il primo pultante che richiama ajax fa:
    function Button1_onclick()
    {
    ajax("?ajax_comando=1", onload);
    function onload()
    {
    var t = this.request.responseText;

    t = execJS(t);

    $("div1").innerHTML = t;
    }


    }

    come vedi, recupero la pagina inviata e lo metto nella variabile t.
    Poi, con la funzione execJS, faccio leggere il javascript dal browser, e, finalmente, tutta la pagina, tranne gli script sono messi nel div di id div1

    la funzione execJS fa:
    //valuta il codice javascript e restituisce la stringa
    //senza codice
    function execJS(t)
    {
    var p1 = 0, p2 = 0, p3 = 0, p4 = 0;
    p1 = t.indexOf("<" + "script", 0);
    if(p1 == -1) return t;

    p2 = t.indexOf(">", p1 + 7) + 1;
    p3 = t.indexOf("<" + "/script>", p2);
    p4 = p3 + 9;

    var c = t.substring(p2, p3);
    var s = document.createElement("script");
    s.type = "text/javascript";
    s.text = c;
    document.getElementsByTagName("head")[0].appendChild(s);

    t = t.substring(0, p1) + t.substr(p4);
    return execJS(t);

    }
    Pietro

  3. #3

    ...

    ottimo!

    Oggi me lo studio bene e ci provo!
    Hai detto che funziona solo con i nuovi browser?
    Despite of my rage i'm still just a rat in a cage

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.