Ich suche nach einer Möglichkeit zu bestimmen, ob/wann ein <select>
Menü geöffnet ist. Ich muss es nicht zwingen, es zu öffnen oder zu schließen, sondern einfach herausfinden, ob es zu einem bestimmten Zeitpunkt offen oder geschlossen ist.Gibt es eine Möglichkeit festzustellen, ob ein <select> Dropdown-Menü geöffnet ist?
Ich kann Ereignisse für Fokus/Unschärfe, MouseUp/MouseDown usw. hören, aber ich glaube nicht, dass ich zuverlässig den Zustand des Menüs aus diesen Ereignissen herausfinden kann. Zum Beispiel könnte mousedown gefolgt von mouseup bedeuten, dass der Benutzer auf eine Auswahl geklickt und gezogen hat (in diesem Fall ist das Menü jetzt geschlossen) oder angeklickt und freigegeben, um das Menü zu öffnen (in diesem Fall ist das Menü geöffnet). Es scheint auch wahrscheinlich, dass das spezifische Verhalten von Dropdown-Menüs Browser-abhängig ist.
Ich weiß, ich könnte dies tun, wenn ich mein eigenes Dropdown-Menü rollen, aber ich bevorzuge <select>
.
Gibt es eine zuverlässige Möglichkeit herauszufinden, ob ein Dropdown-Menü geöffnet ist? Oder ist das etwas, das Javascript nicht wissen kann?
Fazit: Es scheint keine garantierte Möglichkeit zu geben, zu bestimmen, ob ein Auswahlmenü geöffnet ist, entweder indem man das Objekt anfragt oder die Ereignisse abhört, die ausgelöst werden.
Für meinen eigenen Gebrauch bin ich gerade zu halten Spur davon, ob die ausgewählten Fokus hat onfocus und onblur verwenden. Ich gehe davon aus, dass das Menü ohne Fokus nicht geöffnet werden kann, und das scheint in allen Browsern, die ich getestet habe, zu gelten. Es sagt mir zwar nicht, wann das Menü geöffnet ist, aber es sagt mir wann es nicht offen sein kann, was für meine Zwecke gut genug ist.
FYI - IE späteren Versionen öffnen Sie eine benutzerdefinierte Auswahlliste Menü, das nicht die üblichen Ereignisse abfeuert. Im Wesentlichen, wenn Sie eine Auswahlliste öffnen Ihre Maus schwebt jetzt etwas nicht auf das DOM bezogen – JDandChips