Execution JS depuis un appel AJAX
anatolekadel
Messages postés
112
Statut
Membre
-
Alain_42 Messages postés 5413 Statut Membre -
Alain_42 Messages postés 5413 Statut Membre -
Bonjour,
voilà, j'ai une page principale qui contient un ensemble d'onglets.
Chaque onglet reçoit via un appel AJAX du contenu pour accélérer le chargement de la page.
Dans l'un de mes onglets, j'ai un appel AJAX qui retourne du texte mais aussi un certain nombre de scripts JS (nombre qui peut varier).
Donc, pour que mon script soit interprété par le navigateur, je me suis servi de cette astuce: http://dev.petitchevalroux.net/javascript/executer-javascript-appel-ajax-javascript.357.html
Tous les scripts s'exécutent sauf ceux du type
Comment résoudre ce problème ?
voilà, j'ai une page principale qui contient un ensemble d'onglets.
Chaque onglet reçoit via un appel AJAX du contenu pour accélérer le chargement de la page.
Dans l'un de mes onglets, j'ai un appel AJAX qui retourne du texte mais aussi un certain nombre de scripts JS (nombre qui peut varier).
Donc, pour que mon script soit interprété par le navigateur, je me suis servi de cette astuce: http://dev.petitchevalroux.net/javascript/executer-javascript-appel-ajax-javascript.357.html
Tous les scripts s'exécutent sauf ceux du type
<script src=""></script>
Comment résoudre ce problème ?
A voir également:
- Execution JS depuis un appel AJAX
- Nommez une application d'appel vidéo ou de visioconférence - Guide
- Appel privé - Guide
- Double appel - Guide
- Yggtorrent erreur ajax ✓ - Forum Webmastering
- Signal d'appel - Forum iPhone
9 réponses
Hello,
Les scripts type "src" ne s'exécutent pas. SRC est l'abbréviation de "source" : ces lignes ne font que charger du code JS se trouvant dans la page visée, mettant ainsi divers variables et fonctions à disposition. Après il faut les lancer manuellement.
Les scripts type "src" ne s'exécutent pas. SRC est l'abbréviation de "source" : ces lignes ne font que charger du code JS se trouvant dans la page visée, mettant ainsi divers variables et fonctions à disposition. Après il faut les lancer manuellement.
Bonjour,
J'ai trouvé ce qui semblait être la réponse; bien que cela ne m'aide pas...
https://forums.commentcamarche.net/forum/affich-10357968-script-javascript-dans-page-ajax
Donc, voilà mon script qui devrait s'exécuter (il est dans ma page PHP appelé par AJAX)
Le alert("Test"); est là juste pour tester si le script fonctionne ou non.
Maintenant, mon code JS qui doit interpréter les scripts JS:
Où est mon soucis ?
J'ai trouvé ce qui semblait être la réponse; bien que cela ne m'aide pas...
https://forums.commentcamarche.net/forum/affich-10357968-script-javascript-dans-page-ajax
Donc, voilà mon script qui devrait s'exécuter (il est dans ma page PHP appelé par AJAX)
echo '<script>';
echo 'alert("Test");';
echo 'var sprytooltip'.$k.' = new Spry.Widget.Tooltip("sprytooltip'.$k.'", "#sprytrigger'.$k.'");';
echo '</script>';
Le alert("Test"); est là juste pour tester si le script fonctionne ou non.
Maintenant, mon code JS qui doit interpréter les scripts JS:
function request(url,cadre) {
var XHR = getXMLHttpRequest();
XHR.open("GET",url, true);
XHR.onreadystatechange = function attente() {
if(XHR.readyState == 4) {
document.getElementById(cadre).innerHTML = XHR.responseText;
var AllScripts = cadre.getElementsByTagName('script');
for (var i=0; i<AllScripts.length; i++) {
var s=AllScripts[i];
if (s.src && s.src!="") {
// Précédement asynchrone, mis en synchrone pour éviter des problèmes de dépendances de scripts
alert(s.src);
eval(getFileContent(s.src));
}
else {
eval(s.innerHTML);
}
}
}
else {
document.getElementById(cadre).innerHTML = '<img src="content/loading.gif"/>';
}
}
XHR.send(null);
return;
}
Où est mon soucis ?
modifies:
if(XHR.readyState == 4 && XHR.readyState == 200)
pour attendre la réception complète de la réponse
if(XHR.readyState == 4 && XHR.readyState == 200)
pour attendre la réception complète de la réponse
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
si je comprend bien tu veux faire executer des scripts javascript au moment de la réception / afffichage du contenu de chaque onglet ?
Alors essayes de mettre ces scripts dans des fonctions qui seront chargées dès le départ dans la page, elles ne doivent ps faire des Mégaoctets,, puis,
mais ton nombre de fonction n'est pas fixe suivant les onglets alors au lieu de réponseText utilises reponse XML et la tu peux avoir une réponse a plusieurs items
vas voir sur google comment ça marche
tu as aussi Json
Alors essayes de mettre ces scripts dans des fonctions qui seront chargées dès le départ dans la page, elles ne doivent ps faire des Mégaoctets,, puis,
XHR.onreadystatechange = function attente() {
if(XHR.readyState == 4 && XHR.readyState == 200) {
document.getElementById(cadre).innerHTML = XHR.responseText;
//et la tu lances tes fonctions
fonction_js1();
fonction_js2();
fonction_js3();
mais ton nombre de fonction n'est pas fixe suivant les onglets alors au lieu de réponseText utilises reponse XML et la tu peux avoir une réponse a plusieurs items
vas voir sur google comment ça marche
tu as aussi Json
En fait, cela ne m'arrange pas... J'ai trouvé ça sur CCM:
https://forums.commentcamarche.net/forum/affich-10357968-script-javascript-dans-page-ajax#p23490249
Dans le 2ème message, ils expliquent comment faire. C'est pile poil ce que j'ai besoin, si ce n'ai que j'arrive pas à faire ce qu'ils font ^^.
https://forums.commentcamarche.net/forum/affich-10357968-script-javascript-dans-page-ajax#p23490249
Dans le 2ème message, ils expliquent comment faire. C'est pile poil ce que j'ai besoin, si ce n'ai que j'arrive pas à faire ce qu'ils font ^^.
bonsoir,
Je viens de faire l'essai avec une page et de l'Ajax, ça coince au niveau de cette ligne:
var AllScripts = cadre.getElementsByTagName('script');
il faudrait document.getElementByTagName('script'); et pas cadre donc ça te retournerait tous les scripts de ta page complète
et la je ne vois pas comment faire pour parcourir seulement ceux chargés par ajax dans le div avec getElement...
Si tu a un peu de délai, je regarderai la solution que je te proposait avec réponse XML / appel de fonctions et te la transmettrait
Je viens de faire l'essai avec une page et de l'Ajax, ça coince au niveau de cette ligne:
var AllScripts = cadre.getElementsByTagName('script');
il faudrait document.getElementByTagName('script'); et pas cadre donc ça te retournerait tous les scripts de ta page complète
et la je ne vois pas comment faire pour parcourir seulement ceux chargés par ajax dans le div avec getElement...
Si tu a un peu de délai, je regarderai la solution que je te proposait avec réponse XML / appel de fonctions et te la transmettrait