Spesso molti framework o anche applicazioni home-made, utilizzano l’attributo innerHTML per inserire le risposte AJAX del server nella pagina. Ma se questa risposta è dell’HTML che magari contiene uno script Javascript, Internet Explorer non vede e non esegue nulla.

Vediamo un esempio: questa semplice risposta del server deve essere inserita come HTML in un elemento del documento.
<p>Caricamento in corso</p>
<script type='text/javascript'>
alert('azione eseguita');
</script>
Verrebbe naturale caricare questo codice con innerHTML, ad esempio:
div.innerHTML = response;
Chiaramente bisogna sempre assicurarsi che il codice sia valido e non suscettibile di XSS, ma questo discorso esula dal presente articolo.
In ogni caso, Internet Explorer, NON eseguirà il codice né quindi visualizzerà l’alert; questo è un comportamento documentato ma ugualmente molto noioso, perché difficile da ricordare e perché in altri browser, come Firefox, non si presenta.
La soluzione ha questo problema è specificare l’attributo defer all’elemento script, facendolo diventare così:
<p>Caricamento in corso</p>
<script type='text/javascript' defer='defer'>
alert('azione eseguita');
</script>
Solo in questo modo IE interpreterà correttamente lo script e lo eseguirà alla fine della chiamata innerHTML.
obexypaly…
Christine Reyes Bold Naman …
azz, mi avevi illuso, invece niente