begin process at 2012 05 29 16:40:14
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Javascript / DHTML / Ajax

 > 

JavaScript et le navigateur

 > 

Problème de compatibilité

 > 

Problème d'exécution JS dans retour ajax


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Problème d'exécution JS dans retour ajax

vendredi 28 mai 2010 à 16:27:08 | Problème d'exécution JS dans retour ajax

fabulofr

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 <DIV> repéré par la variable 'target' dans mon code js
Bref, dans mon code js, pour exécuter l'ajax:

[code]
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);
}
[/code]
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:
[code]
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);
}
[/code]

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 ;)
vendredi 28 mai 2010 à 16:33:30 | Re : Problème d'exécution JS dans retour ajax

fabulofr

Pardon, remplacez les lignes
var x = document.getElementsByTagName("SCRIPT");
par
var x = div.getElementsByTagName("SCRIPT");
vendredi 28 mai 2010 à 16:43:34 | Re : Problème d'exécution JS dans retour ajax

fabulofr

Test fait:
Ma source PHP:
********************************************************
<div class="BuildingsMain">
<div id="1Informations" class="1Informations"></div>
<div id="1InformationsMouseOver" class="1InformationsMouseOver"></div>
</div>
<script type="text/javascript">
alert('prout');
</script>
<script type="text/javascript">
alert('exec');
</script>
<div class="1Menu">
********************************************************

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

Sous FF => me sort tout => ok
Sous IE =>
********************************************************
<div class="BuildingsMain">
<div id="1Informations" class="1Informations"></div>
<div id="1InformationsMouseOver" class="1InformationsMouseOver"></div>
</div>
<div class="1Menu">
********************************************************


Là j'avoue que j'y capte que dalle ...
vendredi 28 mai 2010 à 18:03:47 | Re : Problème d'exécution JS dans retour ajax

PetoleTeam

Membre Club
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)
vendredi 28 mai 2010 à 18:14:55 | Re : Problème d'exécution JS dans retour ajax

fabulofr

Effectivement, un alert responsetext affiche bien le js. Merci du tuyau.

Mais comment les traiter dans ce cas là ?
vendredi 28 mai 2010 à 18:55:11 | Re : Problème d'exécution JS dans retour ajax

PetoleTeam

Membre Club
Réponse acceptée !
je te livre ce à quoi j'avais abouti
Code Javascript :
//------------------------
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
Code Javascript :
Get_Script( XML_Http.responseText);

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

;O)
vendredi 28 mai 2010 à 19:15:17 | Re : Problème d'exécution JS dans retour ajax

fabulofr

Effectivement, à vue de nez ça devrait le faire ^^
Je teste ça de suite :) merci :D
vendredi 28 mai 2010 à 20:30:41 | Re : Problème d'exécution JS dans retour ajax

fabulofr

Moyennant quelques adaptations, ça marche :D
Merci du coup de pouce ;)
vendredi 28 mai 2010 à 22:14:41 | Re : Problème d'exécution JS dans retour ajax

PetoleTeam

Membre Club
Moyennant quelques adaptations...
il peut être intéressant, pour tous, de connaître ces adaptations.

;O)


Cette discussion est classée dans : javascript, code, var, ajax, js


Répondre à ce message

Sujets en rapport avec ce message

ecire en caractères ARABES dans un fichier javascript .js [ par moha007 ] Bonjourje suis entrain de réaliser un sites multilangues..dans ma page index-ar.html pour mon menu je fais appel à un fichier javascript [code][/code Bug de Javascript ? InnerHTML [ par DuncanIdaho ] Bonjour; J'ai cherché un bon moment, sur Internet, en créant quelques fonctions...  Au final, je n'arrive pas à comprendre mon problème, ou en tout Ajax et Javascript [ par DMK04 ] Bonjour à tous,je débute en Ajax, et je souhaiterais savoir une chose :Est-ce que l'on peu "importer" du nouveau code JavaScript via une "requête" Aja Interpréter code javascript après chargement AJAX [ par VoLc0m ] Bonjour,J'utilise l'objet XmlHTTPRequest (AJAX) pour charger une page web dans le contenu d'un div. La page chargée dans le div contient du code javas Javascript: problème avec Unicode [ par Amallric ] Bonjour,J'ai un site qui fonctionne avec AJAX composé de:- une page index.php pour l'affichage qui contient des balises HTML, avec la balise:[CODE]  c Liste déroulante qui masque la suivante si "non selectionné" [ par scoal ] Bonjour, J'ai 3 liste déroulante qui s'enchaine, le contenue de la seconde dépend du "select" de la première et de même pour la troisième en fonction case grisé javascript [ par stomy95 ] onjour, J'ai une petit souci depuis quelque jour je cherche mais je trouve pas de solution j'ai trouver sur un forum ce script a insérer dans un for Application sur template de phpBB [ par MChauban ] Je développe une application PHP/HTML/AJAX en utilisant le framework de phpbb. Ce code fonctionne sur l'environnement de dév IE7 mais pas avec les aut Affichage d'un tableau [ par tagadax ] Bonjour voila j'ai un problème j'ai une fonction en Javascript qui permet d'afficher un tableau selon un choix effectué dans un select [code=js] func listbox généré par javascript [ par Phoenix2025 ] Bonjour, je cherche à faire une listbox qui affiche 1 à 5 (jusque là pas compliqué). Mais j'aimerais que ma listbox soit remplit par un fichier .js


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,796 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales