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.