Ajouter un commentaire

gauthier

bonjour clara1,

eval ne fera pas ton affaire malheureusement. J'ai rencontré ce problème il y a quelques temps, et voici le type de solution que j'y avais apporté alors :

dans ta fonction qui déclenche l'appel ajax, configure un callback de sorte que la fonction suivante soit appelée avec en argument le conteneur qui a reçu la page chargée par la requête ajax :

function parseJs(inputObj)
{
    var jsTags = inputObj.getElementsByTagName('SCRIPT');
    var head = document.getElementsByTagName("head")[0];
   
   // for this loop to work properly with IE,
   // all your script tags need to be placed inside
   // a body tag, and uppercased :
   //
   // <body>
   // <script src='/myscript.js' type='text/javascript'></script>
   // or
   // <script type='text/javascript'>myinstructions();</script>

   for(var no=0;no<jsTags.length;no++)
   {
      try {
         script = document.createElement('SCRIPT');
         
         if(jsTags[no].src) script.src = jsTags[no].src;
         else script.text = jsTags[no].text;
         script.type = 'text/javascript';
         head.appendChild(script);
      }
      catch(e)
      {
         var err = ''
         for(i in e) err = err+'\n'+i+' : '+e[i]
         alert(err)
      }
   }
}

les commentaires sont en anglais car j'ai fait un copier/coller d'un post que j'avais fait sur un site anglophone pour le code, désolé ;)

Pour le principe, il s'agit simplement de récupérer les scripts, et plutôt que de les évaluer directement (ce qui serait fait avec une portée locale et t'interdirait toute communication avec les autres éléments JS précédemment chargés), ces scripts sont rattachés à la page principale.

Cette fonction traite également les fichiers liés dans les pages chargées ().

Peut-être existe-t-il d'autres solutions plus simples, mais ça, ça marche ;)

Bon courage.

Filtered HTML

Plain text

CAPTCHA
Cette question permet de vérifier que vous n'êtes pas un robot spammeur :-)
 V     V  Y   Y  BBBB    GGG   PPPP  
V V Y Y B B G P P
V V Y BBBB G GG PPPP
V V Y B B G G P
V Y BBBB GGG P