bonjour,

J'ai découvert un bug sur IE que je n'arrive pas à transformer pour qu'il accete la syntax correct :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
function evaltest(){
  window.eval("var test = function(n){"+
    "alert('test '+n);"+
  "}");
  test(1);
  runtest();
}
function runtest(){
  test(2);
}
si on lance evaltest(), "test 1" s'affiche, mais après il y a une erreur, il ne connait pas la fonction test.

le code marche très bien si on enlève le "var " devant "test" seulement ce n'est pas conforme au w3c et la majorité des framework javascript mette un "var " devant leur variable.

cela marche aussi si on remplace
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
var test = function(n){...
//par
function test(n){...
j'ai bien éssayé plusieurs méthode :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
var global = this;
function evaltest(){
  global.eval("var test = function(n){"+
    "alert('test '+n);"+
  "}");
  test(1);
  runtest();
}
function runtest(){
  test(2);
}
j'aboutie toujours au même résultat. Il ne veut pas sortir la fonction test du corp d'éxécution dans lequel la fonction eval est appelé.

je n'es pas réussit par contre à faire un docnode.appendChild(node) où node contient un élément de type '<script type="text/javascript">...</script>' avec à l'intérieur le contenu de mon code javascript à évaluer. docnode étant n'importe quel élément de la page.

quelqu'un aurait une idée ????

PS: qu'elle que soit la méthode employé, j'ai toujours réussi à faire se que je voulais avec firefox ainsi qu'opera.