[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