posição do mouse captura em setInterval () em JavaScript
-
05-07-2019 - |
Pergunta
Eu tenho uma função em javascript que move um div dependendo da posição do mouse. Esta função é definida em uma função setInterval () e executado a cada segundo. Eu preciso para capturar a posição do mouse assim:
function mousemov() {
document.getElementById("myDiv").style.left = Event.clientX; //don't work
}
window.onload = function() {
setInterval("mousemov()",1000);
}
Ps:. Eu não posso usar o evento mousemove porque a função deve ser executada mesmo que o mouse está parado
Obrigado por ajuda!
Solução
A única vez que você pode acessar o objeto de evento é durante a execução de um manipulador de eventos. Então o que você precisa fazer é criar um evento OnMouseMove sobre o documento e armazenar as coordenadas do mouse em um objeto globalmente acessível. Você pode acessar esses valores de qualquer outro lugar em seu script para determinar a posição do mouse.
Aqui está um exemplo (você não estiver usando jQuery, por isso este é o código DOM reta):
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);
}
Eu deveria fazer a nota que clientX e clientY não tome rolagem em conta. Você vai precisar para recuperar os deslocamentos de rolagem e aplicá-los para os valores devolvidos.
Outras dicas
Bem, se você ouvir o movimento do mouse para o documento e salvar a sua localização e, em seguida, sempre que você quer, por exemplo, cada segundo no seu caso, você tem a última posição registrada mouse.
este é um exemplo jQuery
$(document).ready(function()
{
$().mousemove(function(e)
{
window.mouseX = e.pageX;
window.mouseY = e.pageY;
});
});
e sua função mousemove seria
function mousemov() {
document.getElementById("myDiv").style.left = window.mouseX;
}