Ho trovato questa soluzione che adotto nelle mie pagine.
Come ben sai una richiesta XMLHTTP prevede l'assegnazione di una funzione al cambio di status (onreadystatechange) e, difatti, se analizzi il codice della richiesta XMLHTTP troverai qualcosa tipo:
codice:
XHR.onreadystatechange=function(){
/*codice da eseguire quando lo status della richiesta cambia*/
/*a volte è una funzione tipo handleResponse()*/
}
A questo punto, dopo un eventuale controllo del readyState che deve essere 4 e dello status che deve essere 200, possiamo eseguire una funzione qualsiasi che chiameremo niaFunzione.
Avremo quindi:
codice:
XHR.onreadystatechange==function(){
/*...*/
miaFunzione;
}
che andremo a definire come vuota in principio:
codice:
var miaFunzione=function(){
}
Quando vogliamo far eseguire una funzione al caricamento della pagina con Ajax andremo a sovrascrivere la funzione:
codice:
var miaFunzione=function(){
faiQualcosa();
qualcosAltro();
}
e così via.
Alternativa:
inserire lo script in un file esterno, inserire il tag script nel documento da caricare ed utilizzare una funzione per aggiungere dinamicamente lo script (nota per Mega69: risolto il problema della non intrusività:
codice:
/* H5N1 ©2005 */
checkDOMforscripts = function(id){
theDiv=document.getElementById(id);
theScripts=theDiv.getElementsByTagName("SCRIPT");
for (i=0;i<theScripts.length;i++){
url=(theScripts[i].getAttribute("src"));
var scriptToLoad = document.createElement("script");
scriptToLoad.src = url;
scriptToLoad.type="text/javascript";
document.getElementsByTagName("head")[0].appendChild(scriptToLoad);
theDiv.removeChild(theScripts[i]);
}
}
basta aggiungere questo al nostro motore Ajax nel readystatechange.
In questo modo il response è privo di elementi script invasivi