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 36
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 36
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
Rejoignez-nous