Interpréter code javascript après chargement AJAX

VoLc0m
Messages postés
40
Date d'inscription
vendredi 10 janvier 2003
Statut
Membre
Dernière intervention
24 avril 2008
- 10 avril 2008 à 17:16
Bud666
Messages postés
4
Date d'inscription
dimanche 19 octobre 2003
Statut
Membre
Dernière intervention
8 janvier 2009
- 8 janv. 2009 à 14:15
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!

11 réponses

nicomilville
Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
37
10 avril 2008 à 17:24
Salut,

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

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

10 avril 2008 à 17:31
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
0
nicomilville
Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
37
10 avril 2008 à 18:00
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 !!!
0
VoLc0m
Messages postés
40
Date d'inscription
vendredi 10 janvier 2003
Statut
Membre
Dernière intervention
24 avril 2008

10 avril 2008 à 18:08
Oui, sans effet...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
VoLc0m
Messages postés
40
Date d'inscription
vendredi 10 janvier 2003
Statut
Membre
Dernière intervention
24 avril 2008

14 avril 2008 à 10:48
Personne n'a d'idée?
0
Bud666
Messages postés
4
Date d'inscription
dimanche 19 octobre 2003
Statut
Membre
Dernière intervention
8 janvier 2009

23 avril 2008 à 22:12
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.
0
Bud666
Messages postés
4
Date d'inscription
dimanche 19 octobre 2003
Statut
Membre
Dernière intervention
8 janvier 2009

23 avril 2008 à 22:16
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);
}
}
}
0
VoLc0m
Messages postés
40
Date d'inscription
vendredi 10 janvier 2003
Statut
Membre
Dernière intervention
24 avril 2008

24 avril 2008 à 16:53
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
0
Bud666
Messages postés
4
Date d'inscription
dimanche 19 octobre 2003
Statut
Membre
Dernière intervention
8 janvier 2009

28 avril 2008 à 19:14
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...
0
cs_Torez
Messages postés
8
Date d'inscription
jeudi 31 janvier 2008
Statut
Membre
Dernière intervention
7 janvier 2009

7 janv. 2009 à 10:41
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
0
Bud666
Messages postés
4
Date d'inscription
dimanche 19 octobre 2003
Statut
Membre
Dernière intervention
8 janvier 2009

8 janv. 2009 à 14:15
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 ;)
0