Я ищу способ определить, открыто ли меню элементов <select>
. Мне не нужно заставлять его открывать или закрывать, просто выясните, открываются ли они или закрываются в определенное время.
Я могу слушать события для focus/blur, mouseup/mousedown и т.д., но я не думаю, что могу достоверно определить состояние меню из этих событий. Например, mousedown, за которым следует mouseup, может означать, что пользователь щелкнул мышью и перетащил его в выделение и отпустил (в этом случае меню теперь закрыто) или щелкнул и отпустил, чтобы открыть меню (в этом случае меню открыто). Также представляется вероятным, что конкретное поведение выпадающих меню зависит от браузера.
Я знаю, что смогу это сделать, если я открою собственное раскрывающееся меню, но я предпочитаю использовать <select>
.
Есть ли надежный способ узнать, открыто ли раскрывающееся меню? Или это то, что Javascript не может знать?
Заключение. Кажется, нет никакого гарантированного способа определить, открыто ли меню выбора, спросив объект или прослушивая события, которые он запускает.
Для моего собственного использования я просто отслеживаю, имеет ли фокус выбор, используя onfocus и onblur. Я предполагаю, что нет возможности открыть меню без фокуса, и, похоже, это верно во всех браузерах, которые я тестировал. На самом деле это не говорит мне, когда меню открыто, но оно говорит мне, когда он не может быть открытым, что достаточно хорошо для моих целей.