11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour à vous,
Je bidouille sur un truc, je comprends le problème mais ca ne me permets pas de comprendre comment le résoudre. Je m'explique:
Si avec la fonction ajax (jquery) on peut récupérer l'html d'une certaine balise, qu'en est il si cette balise contient de l'html généré par javascript.

Imaginons une page contenant <div id="test"><h1>hello</h1></div>
Mais si la page est ouverte chez le client le contenu généré serait <div id="test"><h1>hello</h1><p>ceci est un paragraphe</p></div>

En utilisant
$.ajax({ 
   type: "GET", 
   url: "test.php", 
   success: function(data){ 
     alert($(html).find("#test").html()); 
   } 
 }); 


L'alert me renverrai <h1>hello</h1> et non <h1>hello</h1><p>ceci est un paragraphe</p>

Comment peut-on récupérer du contenu généré par javascript? Est-ce au moins possible? Smiley sweatdrop
Sauf erreur de ma part c'est impossible.
En effet, pour que la "transformation" soit appliquée, le JavaScript doit être exécuté par le moteur JavaScript du navigateur. Or dans la cas d'une requête Ajax on ne fait que récupérer le contenu de la page sans évaluer le javascript éventuellement contenu dans cette dernière.

En revanche le DOM du résultat de la requête est construit. Il est donc possible de récupérer le code JavaScript qu'il contient et de l'exécuter avec la fonction eval().
Mais je ne suis pas sur que cela suffise à obtenir le résultat escompté. Il faudrait faire le test pour voir le comportement.
Merci ca fait au moins une piste!
De ce que j'ai essayé pour l'instant ca n'execute pas le js intégré d'une page html
alert(eval(html)) renvoie le meme html non édité tout comme alert(html).

Si j'en avais la possibilité, je placerai directement le javascript dans le success d'ajax, mais c'est un script externe (facebook) dont je n'ai pas le controle.

De toute façon, que j'aboutisse ou non, je tiens au courant! Smiley cligne