Sé que esto no debería ser tan difícil, pero no pude encontrar la respuesta en Google.
Quiero ejecutar una pieza de javascript que borre el foco de cualquier elemento en el que esté sin saber de antemano en qué elemento está el foco. Tiene que funcionar en Firefox 2, así como en navegadores más modernos.
¿Existe una forma correcta de hacer esto?
javascript
focus
Andres
fuente
fuente
Respuestas:
Responder:
document.activeElement
Para hacer lo que quieras, usa
document.activeElement.blur()
Si necesita soportar Firefox 2, también puede usar esto:
fuente
document.activeElement.blur()
es la mejor manera de lograr este efecto..focus()
y luego.blur()
algo más arbitrario en tu página. Como solo un elemento puede tener el foco, se transfiere a ese elemento y luego se elimina.fuente
overflow: clip
elemento con estilo. Pero podría usar un campo que ya existe en la página. O cree uno solo para el propósito y retírelo nuevamente.Funciona mal en IE9: borra toda la ventana del navegador si el elemento activo es el cuerpo del documento. Es mejor verificar este caso:
fuente
Ninguna de las respuestas proporcionadas aquí es completamente correcta cuando se utiliza TypeScript, ya que es posible que no conozca el tipo de elemento seleccionado.
Por lo tanto, esto sería preferible:
Además, desalentaría el uso de la solución proporcionada en la respuesta aceptada, ya que el desenfoque resultante no es parte de la especificación oficial y podría romperse en cualquier momento.
fuente
dummyElem.focus () donde dummyElem es un objeto oculto (por ejemplo, tiene zIndex negativo)?
fuente
Puede llamar a window.focus ();
pero mover o perder el foco seguramente interferirá con cualquiera que use la tecla de tabulación para moverse por la página.
podría escuchar el código de tecla 13 y renunciar al efecto si se presiona la tecla de tabulación.
fuente
Con jQuery es solo:
$(this).blur();
fuente
this
necesita ser el elemento enfocado, mientras que la pregunta establece explícitamente que el OP no conoce el elemento enfocado antes de tiempo.