[Web2.0] Caricare javascript attrverso ajax

Gianluca Baù gianluca a ihuri.it
Mar 15 Maggio 2007 15:57:40 CEST



Cristiano Verondini wrote:

>> Voglio caricare un contenuto di un div via ajax, ma oltre all'html mi
>> deve caricare anche il javascript che mi dovra' "gestire"  questo
>> div......
>> e poi quando non mi serve piu' lo "elimino"
>
>
>> Qualche soluzione???
>
>
>    Crea via DOM un elemento script al quale associ l'URL del file js 
> che vuoi caricare. Puoi farlo anche con document.write() ma 
> personalmente non amo molto questa soluzione.
>
>        Cris
>

Per chi è interessato io ho scritto questa funzione:

</CODE>

function javascript_executor ($script_file, $tipo = "ext")
{
    /*
    @DESCRIPTION:     esegue del codice javascript in un codice html 
incluso tramite ajax.
            In più memorizza il javascript eseguito in un array di sessione
            per mantenere il logging
    @PARAMS:     $script_file può essere il nome del file dello script 
da eseguire
            nel caso $tipo sia 'ext' o altrimenti il codice da eseguire 
nel caso $tipo sia 'int'
            $tipo può essere:
            "ext" per specificare che si deve eseguire una script esterna
            "int" per specificare che si deve eseguire direttamente del 
codice
    */
   
    /* Genero delle variabili per gli elementi necessari a creare 
stringhe random */
    $lettere = "a-b-c-d-e-f-g-i-l-m-n-o-p-q-r-s-t-u-v-z";
    $lettere = explode("-", $lettere);
   
    /* Genero una stringa random */
    $random_string = $lettere[array_rand($lettere)] .
             $lettere[array_rand($lettere)] .
             $lettere[array_rand($lettere)];
   
    /* Caricamento di un javascript esterno */
    if ( $tipo == "ext" )
    {
        $script_url = DIRECTORY_JAVASCRIPT_URL . "/" . $script_file;
        $script_path = DIRECTORY_JAVASCRIPT . "/" . $script_file;
       
        if ( file_exists($script_path) )
        {
            $onLoad = "onLoad=\"javascript: var " . $random_string . " = 
document.createElement('script'); " . $random_string . ".src = '" . 
$script_url . "'; document.body.appendChild(" . $random_string . ");\"";
        }
        else
        {
            $onLoad = "onLoad=\"javascript: alert('Errore esecuzione 
codice javascript: " . $script_url . " nel file " . 
basename($_SERVER['PHP_SELF']) . "');\"";
        }
       
        /* Loggo il codice eseguito */
        log_javascript ($script_url, $tipo);
    }
    else
    /* Esecuzione di codice diretto */
    if ( $tipo == "int" )
    {
        $onLoad = "onLoad=\"javascript: " . $script_file . "\"";
       
        /* Loggo il codice eseguito */
        log_javascript ($script_file, $tipo);
    }
    /* Errore nella descrizione del tipo di codice da eseguire */
    else
    {
        $onLoad = "onLoad=\"javascript: alert('Errore esecuzione codice 
javascript interno nel file " . basename($_SERVER['PHP_SELF']) . "');\"";
    }
   
    $img_executor =
    "<img src=\"" . DIRECTORY_IMMAGINI_URL . "/icons/script.png\" 
style=\"position: fixed; right: 1px; bottom: 1px; width: 1px; height: 
1px; display: none;\" " . $onLoad . ">";
   
    echo $img_executor;
}

</CODE>

spero possa essere utile :)

Saluti,

Gianluca


Maggiori informazioni sulla lista Web2.0