Je sais que cela ne devrait pas être si difficile, mais je n'ai pas trouvé de réponse sur Google.
Je veux exécuter un morceau de javascript qui effacera le focus de n'importe quel élément sur lequel il se trouve sans savoir à l'avance sur quel élément se trouve le focus. Il doit fonctionner sur Firefox 2 ainsi que sur des navigateurs plus modernes.
Y at-il un bon moyen de le faire?
javascript
focus
Andrés
la source
la source
Réponses:
Répondre:
document.activeElement
Pour faire ce que vous voulez, utilisez
document.activeElement.blur()
Si vous avez besoin de prendre en charge Firefox 2, vous pouvez également utiliser ceci:
la source
document.activeElement.blur()
est le meilleur moyen d'obtenir cet effet..focus()
et puis.blur()
quelque chose d'autre arbitraire sur votre page. Étant donné qu'un seul élément peut avoir le focus, il est transféré vers cet élément puis supprimé.la source
overflow: clip
élément stylisé. Mais vous pouvez simplement utiliser un champ qui existe déjà sur la page. Ou créez-en un juste pour le but et supprimez-le à nouveau.Fonctionne mal sur IE9 - il brouille toute la fenêtre du navigateur si l'élément actif est le corps du document. Mieux vaut vérifier ce cas:
la source
Aucune des réponses fournies ici n'est complètement correcte lors de l'utilisation de TypeScript, car vous ne connaissez peut-être pas le type d'élément sélectionné.
Ce serait donc préférable:
Je déconseillerais en outre d'utiliser la solution fournie dans la réponse acceptée, car le flou qui en résulte ne fait pas partie des spécifications officielles et pourrait se rompre à tout moment.
la source
dummyElem.focus () où dummyElem est un objet caché (par exemple a un zIndex négatif)?
la source
Vous pouvez appeler window.focus ();
mais déplacer ou perdre le focus est lié à interférer avec quiconque utilise la touche de tabulation pour se déplacer dans la page.
vous pouvez écouter le code clé 13 et renoncer à l'effet si la touche de tabulation est enfoncée.
la source
Avec jQuery c'est juste:
$(this).blur();
la source
this
doit être l'élément focalisé, tandis que la question déclare explicitement que l'OP ne connaît pas l'élément focalisé à l'avance.