HTML选项仅在Safari中不会对onmousedown做出反应

HTML Option wont react to onmousedown ONLY in Safari

本文关键字:onmousedown 选项 Safari HTML      更新时间:2023-09-26

我有一个HTML选项元素,当它被选中时,我想执行一些操作。所以我让它对onmousedown事件做出了反应&使其对该事件执行操作。

我的问题:该代码仅适用于Firefox。在Safari中,事件从未被触发?代码永远不会执行。你知道为什么会发生这种事吗?也许我应该对不同的事件做出反应,比如oncelect或onchange?

这是我正在做的一个简单的例子(我在mousedown上执行了很多代码,但这里只是为了简单起见的提醒)。正如你所看到的,该警报发生在Firefox中,但由于某种原因,它在Safari上不起作用:

<html>
<head>
</head>
<body>
    <select>
        <option id="a1">1</option>
        <option id="a2">2</option>
        <option id="a3">3</option>
        <option id="a4">4</option>
        <option id="a5">5</option>
    </select>
</body>
    <script type="text/javascript">
    <!--
        document.getElementById("a1").addEventListener("mousedown", function(e) { alert("A"); return true; }, false); 
        document.getElementById("a2").addEventListener("mousedown", function(e) { alert("b"); }, false); 
        document.getElementById("a3").addEventListener("mousedown", function(e) { alert("c"); }, false); 
        document.getElementById("a4").addEventListener("mousedown", function(e) { alert("d"); }, false); 
        document.getElementById("a5").addEventListener("mousedown", function(e) { alert("e"); }, false); 
    -->
    </script>
</html>

如果您在列表框中单击某个选项(带有multiple="true"的select),则onmousedown事件似乎只会被触发。当选项从"常规"选择下拉时,单击该选项似乎不会触发事件。

演示


也许我应该对不同的事件做出反应,比如oncelect或onchange?

,我将使用onchange事件:

<select id="sel">
    <option id="a1">1</option>
    <option id="a2">2</option>
    <option id="a3">3</option>
    <option id="a4">4</option>
    <option id="a5">5</option>
</select>
document.getElementById("sel").onchange = function(e) { alert(this.value); };

DEMO