我正在寻找一种方法来确定<select>元素的菜单是否/何时打开。我不需要强迫它打开或关闭,只需弄清楚它在给定时间是打开还是关闭。
我可以监听焦点/模糊、鼠标向上/鼠标向下等事件,但我认为我无法从这些事件中可靠地找出菜单的状态。例如,mousedown 后跟mouseup 可能意味着用户单击并拖动到一个选择并释放(在这种情况下菜单现在关闭)或单击并释放以打开菜单(在这种情况下菜单打开)。下拉菜单的特定行为似乎也可能取决于浏览器。
我知道如果我滚动我自己的下拉菜单我可以做到这一点,但我更喜欢使用<select>.
有没有可靠的方法来确定下拉菜单是否打开?或者这是Javascript无法知道的东西?
结论:似乎没有任何保证的方法来确定选择菜单是否打开,无论是通过询问对象还是通过侦听它触发的事件。
对于我自己的使用,我只是使用onfocus和onblur跟踪选择是否具有焦点。我假设没有焦点就无法打开菜单,这似乎适用于我测试过的所有浏览器。它实际上并没有告诉我菜单何时打开,但它告诉我何时无法打开,这对我的目的来说已经足够了。