带有鼠标滚轮的 mousedown 在 javascript 中不断重新触发

mousedown with mousewheel constantly re-triggers in javascript

我有一个简单的页面:

<!doctype html>
<html>
<head>
<style type="text/css">

.wrapper_1
{
    width:500px;
    height:300px;
    border:1px solid black;
    overflow:hidden;
    margin-top:100px;
}

.ul1
{
    white-space:nowrap;
    margin-bottom:35px;
    background-color:#ededed;
}
</style>
</head>
<body>
<div id="d1" class="wrapper_1" style="position: relative;">
    <div class="mf_scrollbar_scroll_wrapper">
        <ul class="ul1">
            <li>item a</li>
            <li>item</li>
            <li>item</li>
            <li>item d</li>
            <li>item</li>
            <li>item lorem ipsum dolor sit amet adipiscing lorem ipsum dolor sit amet adipiscing lorem ipsum dolor sit amet adipiscing lorem ipsum dolor sit amet adipiscing</li>
            <li>item</li>
            <li>item h</li>
            <li>item</li>
            <li>item</li>
            <li>item l</li>
            <li>item</li>
            <li>item</li>
            <li>item p</li>
            <li>item</li>
            <li>item</li>
            <li>item</li>
            <li>item t</li>
            <li>item</li>
            <li>item</li>
            <li>item x</li>
            <li>item</li>
            <li>item z</li>
            <li>item</li>
            <li>item</li>
            <li>item zz</li>
            <li>item</li>
            <li>item</li>
            <li>item zzz</li>
        </ul>

        <div>hello</div>
    </div>  
</div>


</body>

我有这个 javascript:

document.getElementById('d1').addEventListener('mousedown', function(evt){console.log(evt)}, false)

当我左键或右键单击 并按住 时,它会触发一次。如果我向下单击鼠标滚轮(按钮 4) 并按住 ,它会连续触发。如果按住鼠标滚轮按钮,有没有办法禁用它或让它触发一次?

在书 DOM Enlightenment Cody Lindley 中写到关于鼠标点击事件:

Depending upon the environment configuration, the click event may be dispatched if one or more of the event types mouseover, mousemove, and mouseout occur between the press and release of the pointing device button. The click event may also be followed by the dblclick event"

考虑到这一点,我将做出一个有根据的猜测,你自己也会发生类似的事情。为防止这种情况,您可能需要考虑使用 Underscore.js 库提供的节流阀或去抖动。