Evaluer du Javascript à la volée
Bonsoir à tous !
Je ne comprends pas pourquoi le script suivant fonctionne bien sous Firefox, Chrome et Opera, mais pas sous Internet Explorer 7.
Peut être que quelqu'un saura m'éclairer ?
Le but de ce script est d'évaluer à la volée une chaine contenant des scripts Javascript ainsi que du HTML.
Il peut y avoir plusieurs scripts dans la chaine, mélangés avec du HTML.
Pour l'exemple, la chaine contient uniquement un script affichant "Test" dans une box alert.
Test.html:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| <body>
<script type="text/javascript">
var element = document.createElement('div');
document.body.appendChild(element);
element.innerHTML = "<script type=\"text/javascript\">alert('Test');<\/script>";
var scripts = element.getElementsByTagName("script");
for(var i=0; i<scripts.length; i++)
{
if (window.execScript)
window.execScript(scripts[i].text.replace('<!--',''));
else
window.eval(scripts[i].text);
}
</script>
</body> |
Au chargement de Test.html, on devrait voir une box alert affichant "Test". Ce n'est pas le cas sous IE.
Ne cherchez pas la logique de ce code, c'est juste un exemple :p j'ai pris que la partie utile de mon code pour décrire le bug que je rencontre.
Le problème est visiblement lié à element.getElementsByTagName("script"), qui ne trouve aucun script avec IE, puisque scripts.length vaut 0.
Quelqu'un sait-il pourquoi ça ne fonctionne pas sous IE ?
Je vous remercie et... bonne nuit !