11550 sujets

JavaScript, DOM et API Web HTML5

Bonjour,

J'ai le code suivant :
<A href="#" onclick="getTpl('1_1_1_1_1',event);return false;" ><SPAN>Mots clés francophones sur les moteurs Francais</SPAN></A>

Lorsqu'on clique sur le lien "Mots clés francophones ..", je dois affiché une div en utilisant le javascript.

Le probleme :
Lorsque je clique sur ce lien sous IE, il execute le href, par contre le javascript est inhibé.
Par contre, ça fonctionne du feu de dieu su Firefox et Chrome...
J'ai essayé une simple alerte "alert('toto')" a la place de ma fonction "getTpl(..)". Elle ne s'est pas affichée !

Je sèche complètement !
Avez-vous une idée pour résoudre mon problème.

Merci beaucoup
Non Désolé, je n'ai pas d'exemple en ligne.
Malheureusement, La solution de blackkus ne fonctionne pas non plus.

J'ai réussi à afficher mon élément en utilisant un moyen détourné.
Je m'explique :
J'utilise le framework Javascript "Mootools 1.2".
Etant donné que mon pauvre petit "onclick" ne fonctionne pas
J'ai donc enlever cette propriété, et j'ai utilisé la fonction addEvent.
J'associe donc un événement "onclick" à mon lien grâce à cette méthode.
Et ça fonctionne !


<script>
// recuperer tous les elements a contenu dans mon div id='menu00_1'	
var eltA = $('menu00_1').getElements('a');

// Pour chaque element a
for (var i = 0, x = eltA.length; i < x; i++) {

                // Verifier qu'un evenement onclick n'est pas déjà associé à cet élément
		if (!eltA(i).hasEvent('click')) {

                        // on applique l'évenement onclick 
			eltA(i).addEvent('click', function(event){
                                     // on récupère le paragraphe associée à l'élément 
			              var eltIndex = this.getProperty('indexParagraphe');
                                       // On affiche le contenu correspondant 
					getTpl(eltIndex ,event);

			}); // --> fin de la fonction

		} //--> fin du IF

	} // --> fin du FOR
</script>


Cette solution ne me parait pas optimale.
Si vous avez une idée, n'hésitez pas à me la soumettre.
Modifié par Heyoan (09 Sep 2008 - 09:24)
essaye de mettre un div plutot qu'un a
verifie s'il n'y aurait pas sous ie une autre div qui se place par dessus et qui empeche le click
sinon sans example de code, je ne vois pas.
Hum ... par rapport au code que tu postes il semble manquer un petit :
event.stop();
Smiley murf
Modifié par yodaswii (09 Sep 2008 - 16:31)
a écrit :
essaye de mettre un div plutot qu'un a


Surtout pas. Smiley cligne

a écrit :
Cette solution ne me parait pas optimale.


Et pourquoi cette impression ?
hé bien ma solution ne me parait optimal car
je demande au javascript de récupérer tous les a dans une div
puis dans une boucle j'applique l'évènement onclick

Le temps de chargement sera donc plus long en utilisant cette solution
au lieu de définir l'événement onclick directement dans le HTML
a écrit :
hé bien ma solution ne me parait optimal car
je demande au javascript de récupérer tous les a dans une div
puis dans une boucle j'applique l'évènement onclick

Le temps de chargement sera donc plus long en utilisant cette solution
au lieu de définir l'événement onclick directement dans le HTML


Le temps de chargement ne sera pas significativement plus long.
L'affectation d'événement depuis Javascript est la meilleure solution qui soit ... Smiley cligne On sépare bien la forme du fond pourquoi pas aussi le comportement. Smiley ravi

J'irai même plus loin : si tes liens n'ont que l'utilité de lancer un script ... ils n'ont alors rien à faire dans la structure HTML. Smiley smile
L'attribut onclick n'est censé fonctionner que sur des boutons ou des images sur IE6, pour IE7 je ne sais pas mais il y a des chances qu'il en soit de même.
yodaswii a écrit :
Le temps de chargement ne sera pas significativement plus long.
L'affectation d'événement depuis Javascript est la meilleure solution qui soit ... Smiley cligne On sépare bien la forme du fond pourquoi pas aussi le comportement. Smiley ravi

J'irai même plus loin : si tes liens n'ont que l'utilité de lancer un script ... ils n'ont alors rien à faire dans la structure HTML. Smiley smile


Exactement, si tu a choisi d'utiliser une bibliothèque (ici Mootools), profites-en. Epure ton code html des <a> et autres éléments qui ne sont là que pour contenir des onclick et cible précisement ce que tu veux grace aux fonctions de parcours du DOM de ta biblio.
Tu pourra gérer avec beaucoup plus de souplesse tes events comme ça Smiley cligne