fabulofr
Messages postés116Date d'inscriptionlundi 15 décembre 2003StatutMembreDernière intervention 8 novembre 2011
-
28 mai 2010 à 16:27
PetoleTeam
Messages postés3426Date d'inscriptionlundi 26 décembre 2005StatutMembreDernière intervention14 janvier 2011
-
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 ...)
PetoleTeam
Messages postés3426Date d'inscriptionlundi 26 décembre 2005StatutMembreDernière intervention14 janvier 201117 28 mai 2010 à 18:55
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...
PetoleTeam
Messages postés3426Date d'inscriptionlundi 26 décembre 2005StatutMembreDernière intervention14 janvier 201117 28 mai 2010 à 18:03
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)
Vous n’avez pas trouvé la réponse que vous recherchez ?