8

我在 Javascript 中有一个函数,可以根据鼠标位置移动一个 div。该函数设置在一个setInterval()函数上,每秒执行一次。我需要像这样捕获鼠标位置:

function mousemov() {
  document.getElementById("myDiv").style.left = Event.clientX; //don't work
}

window.onload = function() {
  setInterval("mousemov()",1000);
}

Ps:我不能使用该mousemove事件,因为即使鼠标停止也必须执行该功能。

4

2 回答 2

9

您可以访问事件对象的唯一时间是在事件处理程序的执行期间。所以你需要做的是在文档上创建一个 OnMouseMove 事件并将鼠标坐标存储在一个全局可访问的对象中。然后,您可以从脚本中的任何其他位置访问这些值以确定鼠标位置。

这是一个示例(您没有使用 jQuery,所以这是直接的 DOM 代码):

document.onmousemove = function(e) {
    var event = e || window.event;
    window.mouseX = event.clientX;
    window.mouseY = event.clientY;
}

function mousemov() {
    document.getElementById("myDiv").style.left = window.mouseX;
}

window.onload = function() {
    setInterval(mousemov, 1000);
}

我应该注意 clientX 和 clientY 不考虑滚动。您需要检索滚动偏移并将它们应用于返回的值。

于 2009-10-22T17:00:55.773 回答
1

好吧,如果您听鼠标移动文档并保存其位置,那么,无论何时,例如,在您的情况下,每一秒您都有最新的注册鼠标位置。

这是一个jQuery示例

$(document).ready(function()
 {
  $().mousemove(function(e)
   {
       window.mouseX = e.pageX;
       window.mouseY = e.pageY;
  });
});

你的 mousemove 函数将是

function mousemov() { 
    document.getElementById("myDiv").style.left = window.mouseX;
}
于 2009-10-22T16:55:04.850 回答