Estoy buscando una forma de determinar si un menú del elemento <select>
está abierto. No necesito forzarlo para que se abra o cierre, solo averigüe si está abierto o cerrado en un momento dado.¿Hay alguna manera de determinar si un menú desplegable de <select> está abierto?
Puedo escuchar eventos de enfoque/desenfoque, mouseup/mousedown, etc., pero no creo que pueda determinar de manera confiable el estado del menú de esos eventos. Por ejemplo, mousedown seguido de mouseup podría significar que el usuario hizo clic y arrastró a una selección y soltó (en cuyo caso el menú ahora está cerrado) o hizo clic y soltó para abrir el menú (en cuyo caso el menú está abierto). También parece probable que el comportamiento específico de los menús desplegables dependa del navegador.
Sé que podría hacer esto si hago rodar mi propio menú desplegable, pero prefiero usar <select>
.
¿Hay alguna manera confiable de averiguar si un menú desplegable está abierto? ¿O es algo que Javascript no puede saber?
Conclusión: no parece haber ninguna manera garantizada de determinar si un menú de selección está abierto, ya sea al preguntar al objeto o al escuchar los eventos que se activan.
para mi propio uso sólo estoy manteniendo un seguimiento de si el selecto tiene el foco usando onfocus y onBlur. Supongo que no hay forma de que el menú esté abierto sin tener foco, y eso parece ser cierto en todos los navegadores que he probado. En realidad, no me dice cuándo el menú está abierto, pero me dice que cuando no puede estar abierto, lo cual es suficiente para mis propósitos.
FYI - versiones posteriores de IE abren una costumbre menú de selección de la lista que no se activa los eventos habituales. Básicamente, cuando abres una lista de selección, tu mouse ahora está sobre algo que no está relacionado con el DOM – JDandChips