Interdire le focus lors d'un click

Parfois, dans une IHM, un contrôle doit pouvoir gagner le focus en tabulation mais pas lorsque l'on clique dessus (on a appelé ça « no focus on pointer »). Voilà comment faire...

Exemple : dans une interface de saisie, vous voulez cliquer sur un bouton pour sauvegarder les données mais sans que le champ en cours d'édition ne perde le focus. Pour ce faire, il faut bloquer l'action par défaut de l'événement « mousedown » sur le dit bouton :

element.addEventListener('mousedown', function (e) {
    e.preventDefault();
}, false);
Bloquer le comportement par défaut (focus) du mousedown.

Cela fonctionne avec des éléments qui peuvent « naturellement » gagner le focus comme les boutons mais aussi avec des éléments portant l'attribut « tabIndex » (tester sur des images). Cela ne fonctionne pas avec IE 7/8.