Вопрос

У меня есть функция в javascript, которая перемещается на один делитель в зависимости от положения мыши. Эта функция устанавливается на функцию setInterval () и выполняется каждую секунду. Мне нужно захватить положение мыши следующим образом:

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

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

PS: я не могу использовать событие mousemove, потому что функция должна выполняться, даже если мышь остановлена.

Спасибо за помощь!

Это было полезно?

Решение

Единственный раз, когда вы можете получить доступ к объекту события, это во время выполнения обработчика события. Итак, вам нужно создать событие 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 не учитывают прокрутку. Вам нужно будет получить смещения прокрутки и применить их к возвращенным значениям.

Другие советы

Хорошо, если вы слушаете движение мыши для документа и сохраняете его местоположение, тогда, когда захотите, например, каждую секунду в вашем случае у вас регистрируется последняя позиция мыши.

это пример jquery

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

и ваша функция перемещения мыши будет

function mousemov() { 
    document.getElementById("myDiv").style.left = window.mouseX;
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top