11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour,

J'ai eu besoin de mettre en place un petit système avec xmlhttp qui me permet de récupérer le contenur d'une page PHP dans un div.
Jusque la pas de soucis ça semble fonctionner.
Le problème arrive quand je tente de mettre du code javascript dans cette page appelée.
J'ai fait un exemple avec un simple document.write et que dalle. Pas d'erreur, le code est purement et simplement ignoré, aussi bien sous IE que FF que Safari.

J'imagine qu'il y a quelque chose que je ne dois pas bien faire mais j'avoue que je seche un peu.

Voila un petit exemple en ligne pour que vous puissiez voir comment je procède :

http://www.chevaldetroie.net/fab/test.php

Dans les pages page1.php et page2.php j'ai rajouté :
<script language="javascript">document.write('tralala');</script>

Mais il ne s'execute pas du tout.

Si quelqu'un a une idée je suis preneur.

merci.
Salut Befa,

Je suis souvent tombé sur le problème en question. Je n'ai personnellement pas trouvé de raison - message pour ceux qui savent, j'ai simplement pu constater que le code était soit ignoré (FF) soit supprimé (IE) lors de l'association du responseText à l'innerHTML de l'élément ciblé.

Ma parade a été de récupérer, via une RegExp, tous les scripts contenus dans le responseText, puis de recréer ces scripts à l'aide de createElement('script'), ce qui donne :
var scripts = myXHRobj.responseText.match(/<script.*?>[^¶]*?<\/script>/g);
for(var i=0; i<scripts.length; i++) {
  script = document.createElement('script');
  script.innerHTML = /<script.*?>([^¶]*?)<\/script>/.exec(scripts[ i ]);
  myTargetEl.appendChild(script);
}

Un truc dans ce genre là.

Note que ta page déconne un poil sous IE Smiley cligne
Modifié par Ze Nenex (04 Apr 2007 - 12:57)
Hello !

j'ai rencontré le problème il n'y a pas longtemps et trouvé la solution chez developpez.com : http://www.developpez.net/forums/showpost.php?p=1185289&postcount=18

j'ai même rajouté une petite fonction générique pour appeler tout ça simplement :
function openPage(pageUrl,divCibleId)
{
setInnerHTML(document.getElementById(divCibleId),getFileContent(pageUrl));
}

ainsi je fais mes appels comme ça :
<a href="#" onclick="openPage('menu.jsp','menu');return false;" title="Refresh Menu" class="refresh">Refresh Menu</a>

ici c'est une jsp mais c'est pareil : elle génère un menu lui-même en javascript Smiley smile
Hello Ze Nenex,

merci pour ta réponse Smiley smile

Bon les expressions régulières c'est le truc qui me fait cauchemarder toutes les nuits mais je vais voir si je peux adapter ton exemple.

Sinon; ma page déconne très probablement c'est un exemple que j'ai mis en place rapidement pour montrer mon problème. Smiley langue
Coucou Mary Smiley smile


Bon ça m'a l'air pas mal tout ça, en tout cas j'ai de quoi travailler sur le problème.

Je regarde et si je ne comprend pas tout je reviens te voir Smiley lol

merci merci