Afin d'empêcher un élément de prendre le focus ("non-focusable"), vous devez utiliser Javascript pour guetter l'apparition de la balise focus
et empêcher l'interaction par défaut.
Pour empêcher la tabulation d'un élément, utilisez l'option tabindex=-1
attribut.
Ajout tabindex=-1
rendra n'importe quel élément focalisable, même div
éléments. Cela signifie que lorsqu'un utilisateur clique sur un élément, il est probable qu'il reçoive un contour de mise au point, en fonction du navigateur
Dans l'idéal, c'est ce que vous souhaitez :
/**
* @this {HTMLElement}
* @param {FocusEvent} event
* @return {void}
*/
function preventFocus(event) {
if (event.relatedTarget) {
// Revert focus back to previous blurring element
event.relatedTarget.focus();
} else {
// No previous focus target, blur instead
this.blur();
// Alternatively: event.currentTarget.blur();
}
}
/* ... */
element.setAttribute('tabindex', '-1');
element.addEventListener('focus', preventFocus);
Pour un contrôle de type sûr, vous pouvez effectuer les opérations suivantes if (event.relatedTarget instanceof HTMLElement)
au lieu de if (event.relatedTarget)
.