2009-01-11 70 views

回答

2

我认为你必须做同样的事情@Oli,但如果你使用jQuery,它会更容易。

http://docs.jquery.com/Tutorials:Mouse_Position

<script type="text/javascript"> 
jQuery(document).ready(function(){ 
    $().mousemove(function(e){ 
    $('#status').html(e.pageX +', '+ e.pageY); 
    }); 
}) 
</script> 
+0

加载任务管理器并在移动鼠标时查看CPU图形。使用Linux上的Firefox3时,它快速移动时几乎会消耗整个CPU。基于时间的民意调查(仍然使用大部分代码)会表现得更好。 – Oli 2009-01-12 10:21:35

0

直接的答案是但正如您所说的,您可以将事件附加到所有事项并相应地进行轮询。它昂贵的做每个onmousemove实例严肃的编程,所以你可能会发现围绕页面创建几个区域和轮询onmouseover事件更好。

另一种选择将是(我不知道这是否在所有工作)设定循环超时:

  1. 一个的OnMouseMove处理程序添加到身体
  2. 将整个页面(如改变身体的边缘顶部)
  3. 当onmousemove处理程序触发时,获取位置并删除处理程序。您可能需要对本次活动超时太(用于当鼠标离开视口)

Uberhack但威力工作。

+0

有趣的想法。 – enobrev 2009-01-11 19:48:24

0

正如你所描述的,最直接的方式做到这一点是设置在身体上的OnMouseMove事件处理程序。它比您想象的要便宜:只需很少的计算就可以存储坐标,并且当鼠标移动时,事件每秒被触发50到100次。我怀疑一个典型的用户在浏览网页时不会经常移动鼠标。

以下脚本可帮助计算事件处理程序;在我的机器上,在Firefox中移动鼠标,这为我的CPU使用率增加了5%到10%。

<script type="text/javascript"> 
jQuery(document).ready(function(){ 
    var count = 0; 
    $().mousemove(function(e){ count += 1; }); 
    $().click(function(e){ $('#status').html(count); }); 
}); 
</script> 
相关问题