2011-09-01 104 views
1

假设用户开始移动鼠标并停在浏览器的某处。我怎样才能确定启动和停止点与JavaScript/JQuery的?如何确定鼠标光标的起点和终点?

起始点很简单,我可以通过mousemove事件得到它,但停止点呢?

我不能使用mouseenter或mouseleave事件,因为我的操场是窗口或文档本身。

谢谢。

+0

您应该在mousemove上设置一个计时器,并且如果鼠标未在500ms内移动,您就知道这是最终位置。 –

回答

3

使用setTimeout和clearTimeout的组合。 如果用户没有移动x秒的数量,那么这意味着他停了下来。

在这里,我给你写了一个例子:

<script type="text/javascript"> 
    var lastMove = 0; 
    var lastTimeout = 0; 
    jQuery(document).ready(function() { 
     $(document).mousemove(function (e) { 
      $('#status').html(e.pageX + ', ' + e.pageY); 
      var currentMove = (new Date()).getTime(); 
      if (lastTimeout != 0) { 
       clearTimeout(lastTimeout); 
      } 
      if (currentMove - lastMove > 1500) 
      { alert('started'); } 
      lastMove = currentMove; 
      lastTimeout = setTimeout(function() { 
       var currentMove = (new Date()).getTime(); 
       if (currentMove - lastMove > 1500) 
       { alert('stopped'); } 
      }, 1510); 
     }); 
    }) 
</script> 
<h2 id="status"> 
0, 0 
</h2> 
0

的起始位置是位置时,首先被烧成鼠标移动事件。它会一直点火,直到鼠标停止移动。所以,如果你为你的mousemove事件函数添加一个定时器(setTimeout/clearTimeout),你可以说在经过了一段时间后鼠标已经停止移动,而没有调用mousemove函数。