关于Javascript鼠标事件的困惑
Confusion about Javascript mouse event
我写了一个回调函数来记录鼠标事件:
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
事件。
在此处观看演示:http://jsfiddle.net/r6Gqn/1/
为什么我不移动鼠标,而是触发mousemove
事件?如何停止触发mousemove
事件?
我使用jQuery做了一个变通方法(对我来说更容易,我相信它可以适用于普通的js)。似乎没有人相信这会发生,但我在Chrome中也会发生。(我把鼠标举在空中,它不可能移动。)Chrome存在一个错误。我无法在火狐中复制它。
不管怎样,这是我想出的解决办法。这里有一个演示:JsFiddle
$('#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);
});
基本上,这会修改mouseup
事件以解除绑定mousemove
,等待很短的时间,然后重新绑定它。
相关文章:
- 召回窗口加载事件 - javascript
- 动态创建OnClick事件Javascript
- 全局屏幕span onclick触发一个事件javascript
- 使用react js在跨域上执行事件javascript
- 在change事件javascript上动态添加行
- 在粘贴事件Javascript的输入字段中删除所有非数字字符
- 如何在多表单的输入框中使用输入事件javascript
- 无法查看特定信息.单击事件.Javascript
- 两个文本框事件Javascript
- 阻止鼠标滚轮滚动,但不阻止滚动条事件.JavaScript
- 从 onkeydown 事件 (Javascript) 获取当前用户输入
- “稍后提醒我”/“快速事件”JavaScript解决方案
- 更改我正在侦听的事件Javascript的对象的CSS
- setInterval 不允许同时单击事件 - javascript
- 对每种情况使用一个事件(JavaScript 开关)
- 仅创建第二次点击事件 Javascript
- 每 60 秒仅启动一次事件 (JavaScript)
- 如何连接来自不同文件的事件?Javascript/Backbone
- URL 更改事件 - JavaScript
- 无法在无头模式下使用 watir Webdriver 执行按钮元素的 onclick 事件 javascript