2010-10-22 1 views

Répondre

57

Dans IE, utilisez la méthode setActive() de l'élément que vous voulez activer. Dans les autres navigateurs qui prennent en charge activeElement, vous pouvez utiliser la méthode focus() de l'élément, à condition que l'élément soit capable de recevoir le focus (éléments de formulaire, éléments modifiables, éléments avec tabindex ensemble).

Si vous souhaitez définir le activeElement aux paramètres par défaut (l'élément <body> dans la plupart des navigateurs), il suffit d'appeler la méthode élément actif de blur():

document.activeElement.blur(); 
+0

Prenons la page sur jquery.com à titre d'exemple. Lorsque vous entrez dans la page et vérifiez document.activeElement dans FireBug vous obtenez "". Ensuite, disons que vous modifiez activeElement faire un élément de lien (). Comment pouvez-vous après réinitialiser activeElement au précédent (corps). Je ne peux pas le faire en utilisant document.body.focus(); – mgamer

+2

Utilisez 'document.activeElement.blur();'. Réponse mise à jour –

+0

C'est parfait. THX! – mgamer

15

Vous pouvez simplement .focus() l'élément que vous voulez et ce sera le nouveau document.activeElement.

+12

element.focus n'a d'effet que dans Chrome 55 si l'élément .tabindex est défini. Les Divs par défaut n'ont pas de tabindex, donc par défaut, div.focus() n'a aucun effet. A tout moment avant d'appeler le focus, définissez simplement element.tabindex sur une valeur, comme '-1'. Puis appelez element.focus. Vous verrez maintenant cet élément === document.activeElement, ce qui signifie que les touches de défilement comme haut/bas s'appliqueront à l'élément actuellement actif. Déroutant! – Josh

Questions connexes