Evaluation d'un script recupéré depuis le onclick

Evaluation d'un script recupéré depuis le onclick - HTML/CSS - Programmation

Marsh Posté le 07-09-2006 à 13:34:22    

Je possede un onglet avec une fonction onclick dasn le code HTML

Code :
  1. <a href="#" id="a_onglet_view" onclick="monScript()" >Visualisation</a>


 
Dans un autre script je veux executer cette fonction en allant la chercher
 

Code :
  1. if ( $("a_onglet_view" )!=null) {
  2.       onclick_onglet_voir=$("a_onglet_view" ).getAttribute("onclick" );
  3.       alert (onclick_onglet_voir);
  4.       eval(onclick_onglet_voir); // simule l'execution du onclick attaché à l'onglet "voir"
  5.     }


NB : j'utilise prototype.js et dans prototype   $ = getElementById  
 
Sous firexfox le script marche et le alert donne bien le nom de la function que je veux evaluer

Code :
  1. monScript()


 
Sous internet explorer le script ne marche pas et le alert donne  

Code :
  1. function anonymous {
  2.   monScript()
  3. }


La function que je veux executer a été encapsulé dans cette function anonymous et lorsque je fait l'éval sur celle-ci (eval(onclick_onglet_voir)), rien ne se passe.
IE me renvoie une function a l'intérieur d'une autre function. Je crois que l'on apelle cela une closure. Je vais lire la dessus mais si quelqu'un a une idée elle sera la bien venue.:D:
 
Peut-être faut-il introspecter la chaine renvoyé pour aller chercher la function contenu et l'executer ?

Reply

Marsh Posté le 07-09-2006 à 13:34:22   

Reply

Marsh Posté le 07-09-2006 à 22:05:09    

Autre solution:
en plus du onclick tu ajoute un attribut 'bidon' qui contient la même chose. evel() devrait alors fonctionner.

Reply

Marsh Posté le 08-09-2006 à 09:00:16    

<a onclick="mafonction()" id="truc"></a>
 
 
ben pourquoi tu fais un eval alors que c'est bien crade et que ca pue alors qu'en faisant :  
 
document.getElementById("truc" ).onclick(); tu fais la même chose.
donc via prototype :  
$("truc" ).onclick();  
 
 
C'est totalement inutile de recuperer le contenu de cette fonction et de faire un eval derrière. Surtout que le comportement des navigateurs peut etre différent
 
 

Reply

Marsh Posté le 08-09-2006 à 09:32:58    

gatsu35 a écrit :

... pleins de trucs ...


tain mais +1000 :o

Reply

Marsh Posté le 08-09-2006 à 09:36:02    

Je t'aime Gatsu35   :love:  :)  
 
Ce qu'il y a de bien, que l'on découvre au fur et à mesure c'est que javascript est assez direct. Je n'aurais jamais pensé éxécuter la fonction directement, je me suis torturé la tête avec une évaluation !!
 
Encore Merci

Reply

Sujets relatifs:

Leave a Replay

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