getMouseXY = function(e) {
tempX = e.pageX
tempY = e.pageY
if (tempX < 0){tempX = 0}
if (tempY < 0){tempY = 0}
document.getElementById("circle1").style.top = (tempY - 25) + "px";
document.getElementById("circle1").style.left = (tempX - 25) + "px";
return true
}
document.onmousemove = getMouseXY;
trackCircle = function() {
document.getElementById("circle1").style.top = "10px";
document.getElementById("circle1").style.left = "10px";
}
document.getElementById("circle1").addEventListener("click", trackCircle);
<div id="circle1" style="width:50px;height:50px;background-color:orange;border-radius:50px;position:absolute;"></div>
这个想法是,无论它走到哪里,圆圈都会跟踪你的鼠标,直到你点击,然后它会回到它的静止点。问题是,当我再次移动鼠标时,它会撤消静止位置,并返回跟踪文档。onmousemove 计划是它只在您重新悬停“circle1”后恢复跟踪,一旦处于静止状态......并且然后使用 document.onmousemove 恢复跟踪
我知道我可以调用这样的东西而不是 document.onmousemove:
document.getElementById("circle1").addEventListener('mousemove', getMouseXY);
但是“鼠标是否悬停在这个特定元素上?” 事件是不精确的,当您快速移动鼠标时,您最终会丢失很多跟踪。
好像我需要构建某种状态机,它要么是trackingON,要么是trackingOFF。其中 trackingOFF 通过单击圆圈触发, trackingON 通过悬停圆圈触发(但实际跟踪使用 document.onmousemove