Javascript chargé dynamiquement.

cs_chmod777 Messages postés 46 Date d'inscription jeudi 25 juillet 2002 Statut Membre Dernière intervention 2 décembre 2006 - 13 avril 2006 à 21:03
adoxe Messages postés 11 Date d'inscription mardi 27 mai 2003 Statut Membre Dernière intervention 4 juillet 2008 - 12 oct. 2007 à 06:04
Bonjour à tous!

mon problème est le suivant: lorsque je charge via une
fonction AJAX le contenu d'une page html dans un div (genre mondiv.innerHTML
= contenu renvoyé par httprequest), tout marche bien à part que.... le code
javascript contenu dans cette page html n'est pas exécuté comme il le serait au
chargement normalement de la page!

je ne sais pas si je me suis bien fait
comprendre, et si ce problème est courant quand on utilise
AJAX....

clairement je veux charger dynamiquement un formulaire genre
HTMLArea (TinyMCE en fait), la form apparait, mais je n'ai pas les boutons
etc...

PS: j'ai bien vérifié les paths des fichiers javascript
etc...

donc si vous pouvez m'aider je vous suis tout ouïe!

merci
d'avance!

[:)]

6 réponses

cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
14 avril 2006 à 10:45
Bonjour,
quelle que soit la manière d'appeler un fichier.PHP ( url, formulaire, xmlhttprequest )
le php exécute ce qu'il y a entre <?php et ?>
crée une page html/javascript et la renvoie vers le client.

avec xmlhttprequest cette page est reçue dans une variable javascript.
à ce javascript de faire ce qu'il doit pour exécuter
le javascript éventuellement inclus dans la réponse.

Cordialement. Bul. ~
0
cs_GanJ Messages postés 7 Date d'inscription vendredi 14 avril 2006 Statut Membre Dernière intervention 18 avril 2006
14 avril 2006 à 10:56
Fais appel à eval :

xmlhttp.onreadystatechange = function() {
if(xmlhttp.readyState == 4)
eval(xmlhttp.responseText);
}

GanJ
0
Scraat Messages postés 51 Date d'inscription dimanche 14 mars 2004 Statut Membre Dernière intervention 4 décembre 2012
20 avril 2006 à 20:48
Salut,



dans le cas de TinyMCE je pense que tu auras un petit problème vu que
dans le fichier nécessaire à l'affichage de ton textarea, tu as à la
fois du js et de l'html. Donc l'eval ne sera pas si facile que ça...



Au pire, tu peux charger TinyMCE dès le chargement de ta page en le
rendant invisible, et quand tu en as besoin tu l'affiches (ce qui
serait peut-être pas mal vu le temps qu'il prend à se charger).
0
bogey11 Messages postés 3 Date d'inscription samedi 20 août 2005 Statut Membre Dernière intervention 26 février 2009
23 oct. 2006 à 11:48
J'ai rencontré le même problème et après qq heures,trouvé la solution :
pour afficher correctement Tiny, dans la fonction qui recoit les infos d'Ajax :
xhr_object.onreadystatechange = function anonymous()

  {

  document.getElementById('attente').style.display='block';

    if(xhr_object.readyState == 4)

    {

    document.getElementById('attente').style.display='none';

    document.getElementById('formulaire').innerHTML = xhr_object.responseText;

    tinyMCE.execCommand('mceAddControl', false, "descr");

    }

  }

(ici le textarea s'appele 'descr' et la div attente est juste un petit message pour faire patienter l'utilisateur.)

Et, dans l'appel du formulaire je place un OnSubmit="TinyMCE.prototype.triggerSave()"
ça c'est pour mettre à jour le contenu du textarea (sinon Tiny garde le contenu initial)
0

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

Posez votre question
adoxe Messages postés 11 Date d'inscription mardi 27 mai 2003 Statut Membre Dernière intervention 4 juillet 2008
12 oct. 2007 à 05:31
Dans le très simple et facile, il y a aussi le déplacement d'éléments du DOM, qui gère aussi bien les scripts externes que les scripts inline.

document.prototype.head = document.getElementsByTagName('head')[0];

divFilledByAjax = document.getElementById('targetDIV');

script_list = divFilledByAjax.getElementsByTagName('script');
for (script in script_list) {

    moved_script = divFilledByAjax.removeChild(script);

    head.appendChild(moved_script);
}

Pour la vie et par la vie
Faire le Bien et bien le faire.
0
adoxe Messages postés 11 Date d'inscription mardi 27 mai 2003 Statut Membre Dernière intervention 4 juillet 2008
12 oct. 2007 à 06:04
il faut plutot utiliser
document.head = document.getElementsByTagName('head')[0];

que
document. prototype. head = document.getElementsByTagName('head')[0];

dsl

Pour la vie et par la vie
Faire le Bien et bien le faire.
0
Rejoignez-nous