2010-10-22 19 views

Respuesta

57

En IE, utilice el método setActive() del elemento que desea que sea el elemento activo. En otros navegadores compatibles con activeElement, puede usar el método focus() del elemento, siempre que el elemento sea capaz de recibir el foco (elementos de formulario, elementos editables, elementos con tabindex establecidos).

Si desea establecer la activeElement al valor predeterminado (el elemento <body> en la mayoría de los navegadores), simplemente llame blur() método del elemento activo:

document.activeElement.blur(); 
+0

Tomemos la página en jquery.com como ejemplo. Cuando ingresas a la página y compruebas document.activeElement en FireBug, obtienes "". Entonces digamos que cambias activeElement haz algún elemento de enlace (). ¿Cómo puede después restablecer activeElement al anterior (cuerpo)? No puedo hacerlo usando document.body.focus(); – mgamer

+2

Use 'document.activeElement.blur();'. Respuesta actualizada –

+0

Eso es perfecto. ¡Gracias! – mgamer

15

Usted puede simplemente .focus() el elemento que desea y será el nuevo document.activeElement.

+12

element.focus sólo tiene un efecto en Chrome 55 si el elemento .tabindex está definido. Divs por defecto no tiene un tabindex, por lo que div.focus() no tiene ningún efecto. En cualquier momento antes de llamar al foco, simplemente configure element.tabindex a algún valor, como '-1'. Luego llama a element.focus. Verá ese elemento ahora === document.activeElement, que ahora significa que las teclas de desplazamiento como arriba/abajo se aplicarán al elemento activo actualmente. ¡Confuso! – Josh

Cuestiones relacionadas