Quiero encontrar qué elemento está enfocado. Además, cuando un usuario abre varias ventanas / pestañas, me gustaría saber qué ventana / pestaña está en el foco.

1
Paul 12 nov. 2009 a las 10:13

3 respuestas

La mejor respuesta

En JavaScript simple (es decir, sin marcos como jQuery, MooTools, etc.):

var focusedElement;

document.addEventListener("focus", function(e) {
    focusedElement = e.target;
}, true);

document.addEventListener("blur", function(e) {
    focusedElement = null;
}, true);

Básicamente, cada vez que un elemento gana foco, guardamos ese elemento en una variable, y cuando el elemento pierde foco, restablecemos la variable.

En HTML 5, hay un atributo específico para acceder al elemento actualmente enfocado:

var focusedElement = document.activeElement;
2
Steve Harrison 12 nov. 2009 a las 08:46

Aquí hay una sugerencia . De todos modos, debe agregar un controlador de eventos para cada elemento de entrada en una página. La única alternativa es solo IE: document.activeElement

0
terR0Q 12 nov. 2009 a las 07:27

Usando jQuery, puedes usar esto para encontrar el foco:

$("body").bind("onfocus", function (e) {
  alert("focus: " + e.target); // e.target is the element with focus
});

Solo necesita un controlador que use delegación de eventos: el evento filtra el árbol DOM hasta que se maneja, por lo que puede conformarse con un controlador para todo el documento.

Consulte la documentación de jQuery para conocer su objeto de evento y funciones de evento, hace que sea mucho más simple hacer esto en un navegador cruzado.

No se puede acceder a múltiples ventanas o pestañas del navegador desde Javascript.

1
j-g-faustus 12 nov. 2009 a las 08:10