关于javascript鼠标事件的困惑

关于javascript鼠标事件的困惑,javascript,javascript-events,mouseevent,Javascript,Javascript Events,Mouseevent,我编写了一个回调函数来记录鼠标事件: var body = document.querySelector("body"); var callback = function (e) { console.log(e.type); } body.addEventListener('mousedown', callback, false); body.addEventListener('mouseup', callback, false); body.addEventListener('mou

我编写了一个回调函数来记录鼠标事件:

var body = document.querySelector("body");
var callback = function (e) {
    console.log(e.type);
}

body.addEventListener('mousedown', callback, false);
body.addEventListener('mouseup', callback, false);
body.addEventListener('mousemove', callback, false);
让我困惑的是,当我单击鼠标时,除了触发
mousedown
mouseup
事件外,它还会触发
mousemove
事件

请在此处观看演示:


为什么我不移动鼠标,而是触发
mousemove
事件?如何停止触发
mousemove
事件?

我使用jQuery做了一个变通方法(对我来说更简单,我相信它可以适应普通js)。似乎没人相信这会发生,但我在Chrome上也会发生。(我将鼠标举在空中,它不可能移动。)Chrome上已有一个用于它。我无法在FireFox中复制它

不管怎样,这是我想出的解决办法。这里有一个演示:


基本上,这会修改
mouseup
事件以解除绑定
mousemove
,等待很短时间,然后重新绑定它。

您确定没有移动鼠标吗?即使是一点点鼠标移动也不会在我点击时触发。我想你可能有一只非常敏感的鼠标。如果它让你感觉更好的话,我也会这样,即使我的鼠标在空中也会这样(光学的,所以它不能移动)。这在Firefox中不会发生,但在Chrome中会发生。每个人都在使用什么浏览器?我正在使用Chrome,并且
mouseup
也会触发
mousemove
(即使在半空中)@musefan当你右键单击(在半空中)时,它是否也会触发2
mousemove
s?
$('#box').bind('mousemove', moved);

function moved() {
    console.log('mousemove');
}

$('#box').mousedown(function (ev) {
    console.log("mousedown");
});

$('#box').mouseup(function () {
    $("#box").unbind("mousemove");
    console.log("mouseup");
    setTimeout(function () {
        $("#box").bind("mousemove", moved);        
    }, 1);
});