Je cherche un moyen de déterminer si/quand un menu de l'élément <select>
est ouvert. Je n'ai pas besoin de le forcer pour ouvrir ou fermer, juste comprendre s'il est ouvert ou fermé à un moment donné.Existe-t-il un moyen de déterminer si un menu déroulant <select> est ouvert?
Je peux écouter des événements pour focus/flou, mouseup/mousedown, etc., mais je ne pense pas pouvoir déterminer de manière fiable l'état du menu à partir de ces événements. Par exemple, mousedown suivi de mouseup pourrait signifier que l'utilisateur a cliqué et fait glisser vers une sélection et a été relâché (auquel cas le menu est maintenant fermé) ou cliqué et relâché pour ouvrir le menu (auquel cas le menu est ouvert). Il semble également probable que le comportement spécifique des menus déroulants dépend du navigateur.
Je sais que je pourrais le faire si je lance mon propre menu déroulant, mais je préfère utiliser <select>
.
Existe-t-il un moyen fiable de savoir si un menu déroulant est ouvert? Ou est-ce quelque chose que Javascript ne peut pas savoir?
Conclusion: Il ne semble pas y avoir de moyen garanti de déterminer si un menu de sélection est ouvert, soit en demandant à l'objet ou en écoutant les événements qu'il déclenche.
Pour mon usage, je suis juste garder la trace si la sélection a mise au point avec onfocus et onblur. Je suppose qu'il n'y a aucun moyen pour le menu d'être ouvert sans avoir le focus, et cela semble être vrai dans tous les navigateurs que j'ai testés. Il ne me dit pas quand le menu est ouvert, mais il me dit quand il ne peut pas être ouvert, ce qui est assez bon pour mes besoins.
Pour votre information - les versions ultérieures de IE ouvrir un menu de liste de sélection personnalisée qui ne se déclenche pas les événements habituels. Essentiellement lorsque vous ouvrez une liste de sélection votre souris est maintenant en train de planer quelque chose qui ne concerne pas le DOM – JDandChips