我正在寻找一种方法来确定是否/何时<select>
元素的菜单已打开。我不需要强制它打开或关闭,只需弄清楚它在给定时间是打开还是关闭即可。
我可以监听焦点/模糊、mouseup/mousedown 等事件,但我认为我无法可靠地从这些事件中找出菜单的状态。例如,mousedown 后跟 mouseup 可能意味着用户单击并拖动到某个选择并释放(在这种情况下,菜单现在关闭)或单击并释放以打开菜单(在这种情况下,菜单打开)。下拉菜单的具体行为似乎也取决于浏览器。
我知道如果我滚动自己的下拉菜单我可以做到这一点,但我更喜欢使用<select>
.
有没有可靠的方法来确定下拉菜单是否打开?或者这是 Javascript 无法知道的事情?
结论:似乎没有任何有保证的方法来确定选择菜单是否打开,无论是通过询问对象还是通过侦听它触发的事件。
对于我自己的使用,我只是使用 onfocus 和 onblur 跟踪选择是否具有焦点。我假设没有焦点就无法打开菜单,这在我测试过的所有浏览器中似乎都是如此。它实际上并没有告诉我菜单何时打开,但它告诉我何时无法打开,这对于我的目的来说已经足够了。
你可以玩mouseenter
选择中的事件option
子元素,因为您只能在选择菜单打开时才能输入它们,或者也可以使用click
事件于select
元素,通常在打开它时抛出。
我认为要在精确的时刻测试它是否打开是不可能的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)