2010-09-20 46 views
4

我正在使用代码从this tutorial构建一个滚动JavaScript时间线的网站。有一个演示去与教程here当鼠标移动到mousedown和mouseup之间时,如何捕获鼠标点击javascript

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

我想的行为如下:点击链接触发导航如果鼠标没有移动鼠标按下和鼠标松开之间。如果在按住按钮的同时移动鼠标,则不会遵循链接,因为用户正在尝试移动时间轴而不是点击链接。

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

任何帮助表示赞赏。

回答

2

你是正确的。解决方案只是创建一个标志变量,只要用户拖动时间轴,(event.preventDefault())锚标签。这种解决方案可能会带来更多的错误,但是,如果用户“意外”略微拖拽时间线,但他/她想要的是点击链接?时间表可能不再那么敏感。

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

+0

或者,也可以将此与RMorrisey的想法结合起来,并且只允许在拖动距离小于一些小像素的情况下进行点击,以允许鼠标晃动。 – mojones 2010-09-20 09:50:37

2

当鼠标点击一个链接时,你可以停止所有事件在JavaScript(例如jQuery框架)。 Event.stop() 您可以尝试此操作,或者您可以对光标位于链接上时进行编程,请稍等片刻将其激活。