要知道,鼠标移动事件是瞬时的,只要鼠标动一动,这个事件就会触发。所以鼠标在Dom上移动一次,会触发很多次鼠标移动事件。这意味着,所谓鼠标停止事件,就夹在两次鼠标移动事件的中间。何为停止?鼠标不动是停止,但鼠标不动是一个持续性的操作,怎么监听事件?
你要监听的是鼠标停止移动事件,也就是说想要监听鼠标在移动一段时间后不再移动这个事件。虽然没有原生的事件支持,但可以通过模拟来实现这个功能。但是在模拟这个功能之前,你必须得明确,你打算怎么定义鼠标停止事件,前面说了,鼠标随便动一动就是很多个鼠标移动事件。那最后一次鼠标移动,距离下一次鼠标移动,间隔多久,你会认为应该触发鼠标停止移动事件呢?
模拟的思路就是,每次鼠标移动,都将这个事件触发的时间点记录下来,当经过一段时间,如果没有触发鼠标移动,就触发鼠标停止移动事件。但显然,这个事件会比较延迟。
下面假定两次鼠标移动间隔超过50毫秒则为停止移动,模拟代码如下:
New Document