Problème d'exécution JS dans retour ajax [Résolu]

fabulofr 116 Messages postés lundi 15 décembre 2003Date d'inscription 8 novembre 2011 Dernière intervention - 28 mai 2010 à 16:27 - Dernière réponse : PetoleTeam 3435 Messages postés lundi 26 décembre 2005Date d'inscription 14 janvier 2011 Dernière intervention
- 28 mai 2010 à 22:14
Bonjour à tous :)

J'ai un p'tit sushi :D euh.. souci lol ^^

Je fais une requête ajax sur mon serveur bref je vous passe les détails du code ajax...

Le serveur me renvoi du javascript que je dois exécuter coté client et du html.
Le code renvoyé est sous la forme:
html
....
javascript
....
html
....
javascript
....
html
....
javascript


etc...

La réponse ajax est mise dans une balise
repéré par la variable 'target' dans mon code js
Bref, dans mon code js, pour exécuter l'ajax:

var div = document.getElementById(target);
div.innerHTML = xhr.responseText;
var x = document.getElementsByTagName("SCRIPT");
for(var i=0;i<x.length;i++) {
window.eval(x[i].text);
}

Ce qui fonctionne impeccablement bien sous FF, mais très peu sous IE, en effet, seul la dernière balise <script> est exécutée.

J'ai donc modifié mon code comme suit:
var div = document.getElementById(target);
div.innerHTML = xhr.responseText;
var x = document.getElementsByTagName("SCRIPT");
alert('Nombre de <SCRIPT> trouvés: ' + x.length);
for(var i=0;i<x.length;i++) {
//window.eval(x[i].text);
}


Sous Firefox: 3 balises scripts trouvées, sous IE: 1 seule.
Et ceci, peu importe le nombre de balises se trouvant dans la page, IE n'en trouve toujours qu'une seule, et c'est la dernière de la page chargée par ajax.

Une idée du pourquoi ? Et comment corriger le bordel ?

(Vive IE -_-' mais que j'en ai ma claque de ce navigateur ...)

Thanks all ;)
Afficher la suite 

Votre réponse

8 réponses

Meilleure réponse
PetoleTeam 3435 Messages postés lundi 26 décembre 2005Date d'inscription 14 janvier 2011 Dernière intervention - 28 mai 2010 à 18:55
3
Merci
je te livre ce à quoi j'avais abouti
//------------------------
function Get_Script( txt_){
  var szScript = "<script[^>]*>([\\S\\s]*?)<\/script>";
  var szReg    = new RegExp( szScript, 'img');
  //-- Recup des scripts avec balises
  var O_Script = txt_.match( szReg);
  if( O_Script){
    var szJs = "";
    for(var i = 0; i < O_Script.length; i++){
      szReg = new RegExp( szScript, 'im');
      //-- Recup le contenu des scripts      
      szJs += O_Script[i].match( szReg)[1];
    }
    try{
      eval( szJs);
    }catch(e){}
  }
}
et l'appel était des plus simple
Get_Script( XML_Http.responseText);

je ne pense pas que tu ai besoin de bien plus d'explication soit nécessaire...

;O)

Merci PetoleTeam 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 83 internautes ce mois-ci

Commenter la réponse de PetoleTeam
fabulofr 116 Messages postés lundi 15 décembre 2003Date d'inscription 8 novembre 2011 Dernière intervention - 28 mai 2010 à 16:33
0
Merci
Pardon, remplacez les lignes
var x = document.getElementsByTagName("SCRIPT");
par
var x = div.getElementsByTagName("SCRIPT");
Commenter la réponse de fabulofr
fabulofr 116 Messages postés lundi 15 décembre 2003Date d'inscription 8 novembre 2011 Dernière intervention - 28 mai 2010 à 16:43
0
Merci
Test fait:
Ma source PHP:
********************************************************








<script type="text/javascript">
alert('prout');
</script>
<script type="text/javascript">
alert('exec');
</script>


********************************************************

Un alert(document.getElementById(target).innerHTML);

Sous FF => me sort tout => ok
Sous IE =>
********************************************************










********************************************************


Là j'avoue que j'y capte que dalle ...
Commenter la réponse de fabulofr
PetoleTeam 3435 Messages postés lundi 26 décembre 2005Date d'inscription 14 janvier 2011 Dernière intervention - 28 mai 2010 à 18:03
0
Merci
Bonjour,
j'ai constaté en son temps qu'il y avait effectivement des différences de traitement de la part des navigateurs en ce qui concerne également la prise en compte des SCRIPTs avec la méthode AJAX.

IE et SAFARI ne fonctionnant pas comme FireFox et Opéra.

Il te faut récupérer les parties de script à partir de la responseText et non pas avec getElementsByTagName.

;O)
Commenter la réponse de PetoleTeam
fabulofr 116 Messages postés lundi 15 décembre 2003Date d'inscription 8 novembre 2011 Dernière intervention - 28 mai 2010 à 18:14
0
Merci
Effectivement, un alert responsetext affiche bien le js. Merci du tuyau.

Mais comment les traiter dans ce cas là ?
Commenter la réponse de fabulofr
fabulofr 116 Messages postés lundi 15 décembre 2003Date d'inscription 8 novembre 2011 Dernière intervention - 28 mai 2010 à 19:15
0
Merci
Effectivement, à vue de nez ça devrait le faire ^^
Je teste ça de suite :) merci :D
Commenter la réponse de fabulofr
fabulofr 116 Messages postés lundi 15 décembre 2003Date d'inscription 8 novembre 2011 Dernière intervention - 28 mai 2010 à 20:30
0
Merci
Moyennant quelques adaptations, ça marche :D
Merci du coup de pouce ;)
Commenter la réponse de fabulofr
PetoleTeam 3435 Messages postés lundi 26 décembre 2005Date d'inscription 14 janvier 2011 Dernière intervention - 28 mai 2010 à 22:14
0
Merci
Moyennant quelques adaptations...
il peut être intéressant, pour tous, de connaître ces adaptations.

;O)
Commenter la réponse de PetoleTeam

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.