Interpréter code javascript après chargement AJAX

Signaler
Messages postés
40
Date d'inscription
vendredi 10 janvier 2003
Statut
Membre
Dernière intervention
24 avril 2008
-
Messages postés
4
Date d'inscription
dimanche 19 octobre 2003
Statut
Membre
Dernière intervention
8 janvier 2009
-
Bonjour,

J'utilise l'objet XmlHTTPRequest (AJAX) pour charger une page web dans le contenu d'un div. La page chargée dans le div contient du code javascript, mais celui-ci n'est pas exécuté.

Comment puis je faire pour que le code javascript chargé puisse être interprété?

Merci!
A voir également:

11 réponses

Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
30
Salut,

je n'en suis pas sur mais as tu essayé avec un eval() ???

Si t'a besoin d'aide, MP !!!
Messages postés
40
Date d'inscription
vendredi 10 janvier 2003
Statut
Membre
Dernière intervention
24 avril 2008

Dois je mettre eval() juste aprés l'affectation du responseText à mon div?

obj.innerHTML = xhr.responseText; //où xhr est mon objet XmlHTTPRequest
eval(obj.innerHTML);

J'ai essayé comme çà et çà plante :s
Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
30
Salut,

tu as essayé comme ça ???

obj.innerHTML = xhr.responseText; //où xhr est mon objet XmlHTTPRequest
eval(obj);

Si t'a besoin d'aide, MP !!!
Messages postés
40
Date d'inscription
vendredi 10 janvier 2003
Statut
Membre
Dernière intervention
24 avril 2008

Oui, sans effet...
Messages postés
40
Date d'inscription
vendredi 10 janvier 2003
Statut
Membre
Dernière intervention
24 avril 2008

Personne n'a d'idée?
Messages postés
4
Date d'inscription
dimanche 19 octobre 2003
Statut
Membre
Dernière intervention
8 janvier 2009

Pour répondre à ta question, oui en effet, il faut utiliser un eval(). Mais le eval ne permet nullement d'interpreter un code HTML genre <SCRIPT> (enfin si je n'ai pas perdu la mémoire ), il faut donc nettoyer le code pour ne garder que le javascript.

Voilou.
Messages postés
4
Date d'inscription
dimanche 19 octobre 2003
Statut
Membre
Dernière intervention
8 janvier 2009

J'ai trouvé ceci qui devrait t'aider :

function execJS(node){
var bSaf = (navigator.userAgent.indexOf('Safari') != -1);
var bOpera = (navigator.userAgent.indexOf('Opera') != -1);var bMoz (navigator.appName 'Netscape');
var st = node.getElementsByTagName('SCRIPT');
var strExec;
for(var i=0;i<st.length; i++){
if(bSaf){
strExec = st[i].innerHTML;
}
elseif(bOpera){
strExec = st[i].text;
}
elseif(bMoz){
strExec = st[i].textContent;
}
else{
strExec = st[i].text;
}
try{
eval(strExec);
}catch(e){
alert(e);
}
}
}
Messages postés
40
Date d'inscription
vendredi 10 janvier 2003
Statut
Membre
Dernière intervention
24 avril 2008

Bonne idée, mais j'ai toujours un problème :

dans la page qui est chargée en asynchrone, j'ai du code javascript mais aussi les includes de mes fichiers .css et .js, ainsi que des définitions de fonctions.
A la fin de ma page j'ai mis dans des balises scripts, l'appel à ma fonction init(); qui est censée instancier un objet, qui est issu d'une librairie .js, implémentée dans cette meme page.

Y a t il un moyen de contourner le probleme sans tout déclarer mes includes dans ma première page qui fait office de frame?

Merci
Messages postés
4
Date d'inscription
dimanche 19 octobre 2003
Statut
Membre
Dernière intervention
8 janvier 2009

En fait, ce que je te conseil, c'est de charger le maximum de fichier js, css au démarrage, cela te permet ensuite de faciliter l'insertion avec ajax.
Après, ceci n'engage que moi...
Messages postés
8
Date d'inscription
jeudi 31 janvier 2008
Statut
Membre
Dernière intervention
7 janvier 2009

Salut,

Désolé de déterrer ce topic, mais j'ai exactement le même problème que Volc0m !

J'ai une page appelée avec AJAX et quand je note un simple test :
<script type="text/javascript">
document.write("test");
</script>
Ca ne fonctionne pas.

J'ai essayé avec eval() comme ceci :
<script type="text/javascript">

var test = "test";
eval(test);
document.write(test);

</script>
et comme cela :
<script type="text/javascript">

eval(document.write("test"));

</script>
et ça ne fonctionne absolument pas !

Est-ce que tu as trouvé une solution Volc0m ?
Ou est-ce que quelqu'un peut m'aider svp ?
J'aimerais vraiment savoir comment exécuter du javascript dans une page appelée avec AJAX.

Ah oui, petite précision troublante ( troublante pour moi ) si je fais :

là ça fonctionne !!!
Donc, le problème, c'est que ce que je met entre les balises <SCRIPT> n'est pas pris en compte !

Quelqu'un à une solution ? svp.

A+,
Toorreezzz
Messages postés
4
Date d'inscription
dimanche 19 octobre 2003
Statut
Membre
Dernière intervention
8 janvier 2009

Alors, pour répondre a tes questions :

"
là ça fonctionne !!! "

Oui, dans ce cas là, tu lui demande juste d'afficher un controle qui contient des propriétés (onClick en est une, ainsi que le code qui lui est associé).

Il faut différencier la balise <script> qui elle, n'est pas interprétées lors du chargement Ajax. pour que cela marche, il faut appliquer le eval() sur tout le document que tu as chargé.

et pas seulement sur le code...

soit str la chaine qui est chargée via Ajax, tu dois faire
eval(str);

Voili voilou, en espérant avoir été assez clair ;)