var click = false; $('a') .on('focus', function(){ setTimeout(function(){ // Si après 100ms, click n'est pas vrai, alors c'est un focus clavier if(!click) afficherAlerte("Focus réel !"); }, 100); }) .on('click', function(){ click = true; afficherAlerte("Clic !"); // 50ms après le timeout du focus, on remet click à faux setTimeout(function(){ click = false; }, 150); }) ; function afficherAlerte(message){ // Crée un span qui sera masqué après une seconde $alert = $("<span>" + message + "</span>"); $('body').append($alert.delay(1000).slideUp()); }
<a href="#">Lien de test</a>
span { display: block; }