当鼠标在mousedown和mouseup之间移动时,如何使用javascript捕获鼠标单击

时间:2010-09-20 09:24:22

标签: javascript jquery javascript-events mouseevent

我正在使用this tutorial中的代码构建一个滚动javascript时间线的网站。有一个演示可以使用教程here

我的问题如下:如果用户点击时间轴进行拖动,并且他们碰巧点击链接,那么当释放鼠标按钮时,浏览器会将其解释为点击链接。因此,很容易偶然离开时间轴。

我想要的行为如下:点击链接 会触发导航如果鼠标尚未在mousedown和mouseup之间移动。如果在按住按钮的同时移动鼠标,则不会跟踪链接,因为用户正在尝试移动时间轴而不是单击链接。

这可能吗?我有一种感觉,我们需要一个 is_mouse_moved 布尔变量,在mousedown上设置为false,在mousemove上设置为true。然后在mouseup上检查是否将mouseup事件“传递”到浏览器。你可以说,我对js并不是太熟悉了!

任何帮助表示感谢。

3 个答案:

答案 0 :(得分:2)

当鼠标单击链接时,您可以在javascript(例如jQuery框架)中停止所有事件。 Event.stop() 你可以尝试这个,或者你可以编程当光标在链接上时,等待一下即可激活它。

答案 1 :(得分:2)

您可能希望在触发 mousedown 事件时存储坐标,并读取 mouseup 中的坐标以查看它们是否已经发生了相当大的变化。 Quirksmode在阅读鼠标事件的坐标方面有很好的文档:

http://www.quirksmode.org/js/events_properties.html

答案 2 :(得分:2)

你的正确。解决方案只是创建一个标志变量,每当用户拖动时间轴(event.preventDefault())锚标签时。这个解决方案可能会造成更多错误,因为如果用户“意外”轻微拖动时间线,但他/她想要的是点击链接?时间表可能不再具有响应性。

我的建议是,防止默认所有锚标记,然后使用双击访问特定链接。