如何以编程方式告诉 HTML SELECT 下拉列表(例如,由于鼠标悬停)?
如何以编程方式告诉 HTML 要下拉(例如,由于鼠标悬停)?select
如何以编程方式告诉 HTML 要下拉(例如,由于鼠标悬停)?select
这实际上曾经可以通过HTML + Javascript实现,尽管其他地方的人都说它不是,但它后来被弃用了,现在不起作用。
但是,这仅适用于Chrome。如果您有兴趣,请阅读更多内容。
根据 W3C 工作草案 HTML5,第 3.2.5.1.7 节。互动内容:
HTML 中的某些元素具有激活行为,这意味着用户可以激活它们。这触发了一系列依赖于激活机制的事件[...]例如,使用键盘或语音输入,或通过鼠标单击。
当用户以单击元素以外的方式触发具有已定义激活行为的元素时,交互事件的默认操作必须是对该元素运行综合单击激活步骤。
<select>
作为一个交互式内容,我相信可以编程显示它的s。经过几个小时的尝试,我发现使用和工作。<option>
document.createEvent()
.dispatchEvent()
也就是说,演示时间。这是一个工作小提琴。
网页:
<select id="dropdown">
<option value="Red">Red</option>
<option value="Green">Green</option>
<option value="Blue">Blue</option>
</select>
<br>
<button id="fire" type="button" onclick="runThis()">Show dropdown items</button>
Javascript:
// <select> element displays its options on mousedown, not click.
showDropdown = function (element) {
var event;
event = document.createEvent('MouseEvents');
event.initMouseEvent('mousedown', true, true, window);
element.dispatchEvent(event);
};
// This isn't magic.
window.runThis = function () {
var dropdown = document.getElementById('dropdown');
showDropdown(dropdown);
};
如果有人找到一种方法来做同样的事情,但不是在Chrome中,请随时修改这个小提琴。
Xavier Ho的答案涵盖了如何解决目前大多数浏览器中的问题。但是,“不再通过JavaScript调度/修改”事件是很好的做法。(例如,在这种情况下)mousedown
从版本 53+ 开始,Google Chrome 将不会对不受信任的事件执行默认操作。例如,由脚本创建或修改的事件,或通过方法调度的事件。此更改是为了与Firefox和IE保持一致,我认为这已经没有执行该操作。dispatchEvent
出于测试目的,Fiddle提供了Xavier的答案在chrome 53 +中不起作用。(我不测试FF和IE)。
参考链接:
https://www.chromestatus.com/features/5718803933560832 https://www.chromestatus.com/features/6461137440735232
而 initMouseEvent 也被弃用