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