Zachyťte polohu myši na setInterval() v Javascriptu

Mám funkci v Javascriptu, která přesune jeden div v závislosti na poloze myši. Tato funkce je nastavena na setInterval() funkce a provádí se každou sekundu. Potřebuji zachytit polohu myši takto:

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

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

Ps:Nemohu použít mousemove protože funkce musí být provedena, i když je myš zastavena.

Odpověď

Jediný okamžik, kdy můžete přistupovat k objektu události, je během provádění obsluhy události. Co tedy musíte udělat, je vytvořit událost OnMouseMove v dokumentu a uložit souřadnice myši do globálně přístupného objektu. K těmto hodnotám pak můžete přistupovat odkudkoli ve vašem skriptu a určit polohu myši.

Zde je příklad (nepoužíváte jQuery, takže toto je přímý kód 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);
}

Měl bych poznamenat, že clientX a clientY neberou rolování v úvahu. Budete muset načíst posuny posunu a použít je na vrácené hodnoty.