【发布时间】:2019-01-03 22:15:03
【问题描述】:
我的目标是在 mouseup 事件触发之前检测最后一次鼠标移动的方向。
为了避免验证小的非自愿移动(例如:我将鼠标向右移动 100 像素,然后我停止但不自觉地向左移动 2 像素)我会在鼠标指针达到最小安全距离后确认方向(间隙)从它改变方向的最后一点开始。
这是我的实现的简化:
var direction = "",
oldx = 0,
invert = 0,
gap = 10,
move = "",
mousemovemethod = function (e) {
if (e.pageX < oldx) {
if(direction == "right") invert = e.pageX;
direction = "left";
if(e.pageX < invert - gap) move = "left";
} else if (e.pageX > oldx) {
if(direction == "left") invert = e.pageX;
direction = "right"
if(e.pageX > invert + gap) move = "right";
}
document.body.innerHTML = "moving " + direction + ", last inversion point: " + invert + ", Validated movement: " + move;
oldx = e.pageX;
}
document.addEventListener('mousemove', mousemovemethod);
这是fiddle
代码有效,但在我看来它冗长且不清楚。我在这种实现方面一直很差,我想知道是否有人知道处理这种机制的更优雅的方式。
欢迎提出任何建议。
【问题讨论】:
标签: javascript mouseevent mouse mousemove