Ajax : exécution d'un code javascript dans la page appelée , IE grrr

Ajax : exécution d'un code javascript dans la page appelée , IE grrr - HTML/CSS - Programmation

Marsh Posté le 11-02-2007 à 12:06:48    

Bonjour à tous,
 
je suis en train de m'arracher les cheveux avec ce navigateur pourri qu'est IE.
Mon but est d'exécuter une fonction javascript dans la page appelée par Ajax.
Le code marche à merveille sur Firefox, mais IE il veut rien savoir.

Code :
  1. xhr.onreadystatechange = function(){
  2.  // On ne fait quelque chose que si on a tout reçu et que le serveur est ok
  3.  if(xhr.readyState == 4 && xhr.status == 200){
  4.   leselect = xhr.responseText;
  5.   var c = document.getElementById('affichage_liste_semaine');
  6.   c.innerHTML = leselect;
  7.   var jscript = c.getElementsByTagName('script');
  8.   for (var i=0; i<jscript.length; i++) {
  9.       eval(jscript[i].innerHTML);
  10.             }
  11.  }
  12. }


Quand je teste jscript.length, sous Firefox il vaut 1, sous IE il vaut 0.
Comment résoudre ce problème ? Je sèche et je n'ai trouvé aucune solution pour IE  :cry:  
 
Merci pour votre aide.

Reply

Marsh Posté le 11-02-2007 à 12:06:48   

Reply

Marsh Posté le 11-02-2007 à 18:09:09    

Un petit up ! En espérant que je trouverai une solution...

Reply

Marsh Posté le 11-02-2007 à 18:24:02    

Après un après-midi complet de recherche, j'ai enfin trouvé la solution !

Code :
  1. xhr.onreadystatechange = function(){
  2.  // On ne fait quelque chose que si on a tout reçu et que le serveur est ok
  3.  if(xhr.readyState == 4 && xhr.status == 200){
  4.   leselect = xhr.responseText;
  5.   if(launchJavascript(leselect) == false)
  6.   {
  7.          var c = document.getElementById('affichage_liste_semaine');
  8.          c.innerHTML = leselect;
  9.   }
  10.  }
  11. }


launcheJavascript:

Code :
  1. function launchJavascript(responseText) {
  2.       // RegExp from prototype.sonio.net
  3.       var ScriptFragment = '(?:<script.*?> )((\n|.)*?)(?:</script> )';
  4.          
  5.       var match    = new RegExp(ScriptFragment, 'img');
  6.       var scripts  = responseText.match(match);
  7.      
  8.       if(scripts) {
  9.             var js = '';
  10.             for(var s = 0; s < scripts.length; s++) {
  11.                   var match = new RegExp(ScriptFragment, 'im');
  12.                   js += scripts[s].match(match)[1];
  13.             }
  14.             eval(js);
  15.             return true;
  16.       }
  17.       return false;
  18. }


 
J'ai trouvé cette solution sur ce site: http://rabaix.net/index.php/en/art [...] _libraries
En espérant que ça aidera quelqu'un d'autre !

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed