Bien le bonjour,
Ci dessous, un code on ne peut plus simple pour éviter la multi soumission d'un lien. L'exemple est simplifié à outrance pour mettre en lumière le problème. Dans cet exemple, on se contente de recharcher la même page à chaque click sur le lien. Le Href est appelé uniquement au premier clic car le onclick retourne true uniquement si la variable js token est à true. Suite au premier clic, le token est placé à false et tout clic suivant ne fait donc rien.
Sous Chrome, Firefox, aucun soucis, ce code fonctionne parfaitement.
Sous IE, si on clique lentement aucun soucis, mais dés lors qu'on clique rapidement sur le lien, et qu'on déclenche en réalité un double clic, le onclick retourne bien true mais le Href n'est pas appelé ce qui est complètement aberrant !
Pour reproduire le problème, il suffit d'afficher la console de IE et de voir qu'en cliquant rapidement sur le lien, on a des sorties console "false - token false" et donc que le lien n'a pas fonctionné. Sous Chrome cette sortie console ne survient jamais.
Si un illuminé a une explication à ce phénomène que je n'explique pas, je suis preneur.
Merci d'avance.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 var token = true; function checkToken() { if (token == true) { token = false; return true; } else { return false; } }
Code html : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 <a href="javascript:document.location.href = 'test.html';" onclick="if (checkToken()) { return true; } else { console.log('return false - token false'); return false; }"> LIEN </a>
Partager