Evaluer du Javascript à la volée

Salut à 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]

[/CODE]

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 :stuck_out_tongue: 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!

Ptet une question stupide mais pourquoi tu mets ton JS dans une balise script, pour aller le récupérer 4 lignes plus bas?

Sinon ya des merdes avec getElementsByTagName et les balises , je crois qu’il faut mettre “script” en majuscule genre getElementsByTagName(“SCRIPT”). Mais c’est des vieux souvenirs donc bon.

Comme je dis plus haut « Ne cherchez pas la logique de ce code, c’est juste un exemple » :wink:
Il montre juste le problème que je rencontre, c’est à dire le getElementsByTagName qui ne trouve pas les scripts, j’ai viré tout le reste pour ne pas vous embrouiller avec du code inutile.
Le code HTML et JS que je met dans element peut provenir d’un appel Ajax vers un serveur par exemple, ou peut être saisi par quelqu’un dans une textarea… là il est en dur, mais c’est pour l’exemple.

OK je testerai ça dès que possible, mais il me semble avoir déjà essayé :wink:

J’ai trouvé un exemple qui fonctionne, il ne me reste plus qu’à comprendre pourquoi je verrai ça ce soir.
Il charge en AJAX un fichier HTML contenant également du Javascript, et je vois bien l’effet sous IE 7.

Voir ICI

Le code HTML (contenant du Javascript) téléchargé à la volée en AJAX

XSS potentiel peut etre ?

J’ai résolu mon problème, j’updaterai le topic rapidement pour dire comment.

Peux-tu développer un peu?

je veux bien la réponse moi.

sinon pour executer les balises script, j’aurais fait un regex du genre avec un eval de chaque chaine trouvée.

(ou j’aurais utilisé un framework genre prototype avec evalScripts:true dans les params ajax et je suis tranquille ;))

Je crois que c’est ce qu’on avait fait ici.

Hello,
Désolé pour le retard :S

Alors en fait j’ai réussi à résoudre mes problèmes en étudiant l’exemple que je donne plus haut (voir les deux liens que j’ai postés qui pointent vers developpez.com).
Cet exemple utilise exactement la même méthode que dans le code de mon premier post, et correspond exactement au problème posé, le Javascript provient d’un appel AJAX et est mélangé avec du HTML.

Je ne me souviens plus des détails de mon erreur dans mon extrait de code… Si jamais tu es bloqué fais le moi savoir, je regarderai les diffs de mon code pour te dire ce qu’il en est exactement.

J’ai pensé faire ça aussi, mais un navigateur web c’est quand même fait pour interprêter du XML en natif, et c’était juste frustrant de ne pas arriver à faire fonctionner ça sous IE et devoir faire des regex pour trouver une balise…