pb avec setAttribut, onClick et IE

pb avec setAttribut, onClick et IE - HTML/CSS - Programmation

Marsh Posté le 03-05-2004 à 16:30:48    

Salut, je vous fais un cas classique, je pense.
 
en faite j'ai creer un bouton auquel je veux assigner un evenement (avec onclick) et setAttribut().  
avec Netscape et mozilla ça marche la function est appeler, mais avec IE, que dale il en veux vraiment pas.
 

Code :
  1. var buttonOk = document.createElement('button');
  2.   buttonOk.setAttribute("name","Valider" ) ;
  3.   buttonOk.appendChild(document.createTextNode("Valider" ));
  4.  buttonOk.setAttribute("onclick","pg.stopBlink();return true" );
  5.   this.buttonOkForm.appendChild(buttonOk);
  6.   document.getElementById("afficher_date" ).appendChild(this.buttonOkForm);


 
voila, quelqu'un voit-il ce que IE ne veut pas?  
 
merci beaucoup d'avance :)

Reply

Marsh Posté le 03-05-2004 à 16:30:48   

Reply

Marsh Posté le 03-05-2004 à 17:33:41    

probleme resolue.  
 
pour information il fallais mettre  

Code :
  1. buttonOk.onclick = function(){<code>}

Reply

Marsh Posté le 03-05-2004 à 20:28:07    

Précision, le:
 

Code :
  1. buttonOk.setAttribute("onclick","pg.stopBlink();return true" );


 
qui ne fonctionne pas, c'est un bug de IE.

Reply

Marsh Posté le 03-05-2004 à 21:34:43    

lunatik3 a écrit :

probleme resolue.  
 
pour information il fallais mettre  

Code :
  1. buttonOk.onclick = function(){<code>}



Beurk. Autant utiliser les fonctions spécialement faites pour associer un évènement à un élément...
 
Pour moz :

Code :
  1. buttonOk.addEventListener("click", function, false);


 
Pour IE :

Code :
  1. buttonOk.attachEvent("onclick", function);


---------------
Incongru : une FAQ abandonnée sur les Standards du Web - FAQ périmée de blabla@Prog
Reply

Marsh Posté le 03-05-2004 à 21:39:35    


 
Pour quelle raison ?
Ça a l'avantage de passer sur tous les navigateurs actuels.
 
addEventListener et attachEvent, c'est pratique pour installer plusieurs guetteurs sur le même évènement d'un même élément et (dans le cas de addEventListener) de profiter du modèle de capture d'évènements.
 
Si on a besoin ni de l'un ni de l'autre, autant utiliser element.onevenement = function() {}

Reply

Marsh Posté le 03-05-2004 à 21:55:25    

bobe a écrit :

Pour quelle raison ?
Ça a l'avantage de passer sur tous les navigateurs actuels.


Bof, un petit wrapper sur les 2 fonctions et on en parle plus...
 

bobe a écrit :

Si on a besoin ni de l'un ni de l'autre, autant utiliser element.onevenement = function() {}


Ben déclarer le code d'une fonction en ligne comme ça je trouve ça ni lisible ni très souple...


---------------
Incongru : une FAQ abandonnée sur les Standards du Web - FAQ périmée de blabla@Prog
Reply

Marsh Posté le 03-05-2004 à 22:10:06    

gm_superstar a écrit :

Bof, un petit wrapper sur les 2 fonctions et on en parle plus...


 
Oui, c'est juste.
M'enfin on peut pas s'empécher au bout d'un moment de faire de même pour d'autres méthodes non implémentées par IE (ou d'autres navigateurs) et ça devient rapidement l'usine à gaz :(  
 
Il y a des possibilités pour ajouter directement une méthode sur un objet prédéfini ainsi que sur toutes ses instances, mais aucune ne marche sur IE.
 
exemple:
 

Code :
  1. HTMLElement.prototype.addEventListener = function() {
  2.     ...
  3. }


 
Propre, clean, bref l'idéal. Ne marche pas sous IE ni Opera.
 

gm_superstar a écrit :


Ben déclarer le code d'une fonction en ligne comme ça je trouve ça ni lisible ni très souple...


 
Oui mais ça, on peut le faire aussi avec addEventListener et attachEvent donc bon...
 
Et pûis rien n'empèche de déclarer la fonction avant:
 

Code :
  1. function blah() {
  2.     ...
  3. }
  4. element.onevent = blah;


Message édité par bobe le 03-05-2004 à 22:11:55
Reply

Sujets relatifs:

Leave a Replay

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