66 votes

Comment déterminer quel élément de la page html a le focus ?

Duplicata possible :
Comment puis-je savoir quel élément du DOM a le focus ?

Existe-t-il un moyen en javascript de déterminer quel élément de la page html a le focus ?

84voto

Aron Rotteveel Points 27894

Utilisez le document.activeElement propriété.

El document.activeElement La propriété est prise en charge par Chrome 2+, Firefox 3+, IE4+, Opera 9.6+ et Safari 4+.

Notez que cette propriété ne contient que les éléments qui acceptent les frappes au clavier (comme les éléments de formulaire).

47voto

Paolo Bergantino Points 199336

Vérifiez cet article de blog . Il donne une solution de contournement pour que document.activeElement fonctionne dans tous les navigateurs.

function _dom_trackActiveElement(evt) {
    if (evt && evt.target) { 
        document.activeElement = evt.target == document ? null : evt.target;
    }
}

function _dom_trackActiveElementLost(evt) { 
    document.activeElement = null;
}

if (!document.activeElement) {
    document.addEventListener("focus",_dom_trackActiveElement,true);
    document.addEventListener("blur",_dom_trackActiveElementLost,true);
}

Quelque chose à noter :

Cette mise en œuvre est légèrement trop pessimiste ; si la fenêtre du navigateur perd le focus, activeElement est défini comme nul (car le contrôle d'entrée perd également le focus). Si votre application a besoin de la valeur de activeElement même lorsque la fenêtre du navigateur n'a pas le focus, vous pouvez supprimer l'écouteur d'événement blur.

6voto

ernesto Points 141

Juste pour le compte rendu, un peu en retard, et bien sûr non supporté par les anciens navigateurs :

var element = document.querySelector(":focus");

Devrait fonctionner sur tous les éléments (par exemple aussi les ancres).

3voto

cic Points 2225

Peut-être document.activeElement Je ne sais pas si les navigateurs sont compatibles. Il semble fonctionner dans Firefox et IE7, mais je suppose que vous devez l'essayer dans Opera et ainsi de suite.

0voto

Jason Punyon Points 21244

Vérifiez le poste inférieur . Je pense que ça pourrait marcher...

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X