如何在没有事件的情况下获取鼠标位置(无需移动鼠标)?
2022-08-29 23:46:02
是否可以在页面加载后使用JavaScript获取鼠标位置,而无需任何鼠标移动事件(无需移动鼠标)?
是否可以在页面加载后使用JavaScript获取鼠标位置,而无需任何鼠标移动事件(无需移动鼠标)?
真正的答案:不,这是不可能的。
好吧,我刚刚想到了一种方法。使用覆盖整个文档的 div 覆盖页面。在其中,创建(比如说)2,000 x 2,000个元素(以便伪类在IE 6中工作,请参阅),每个大小为1像素。为那些更改属性的元素创建 CSS 规则(假设)。在加载处理程序中,循环遍历 400 万个元素中的每一个,检查 / 直到找到具有悬停字体的元素。从此元素推断回来,以获得文档中的坐标。<a>
:hover
:hover
<a>
font-family
<a>
currentStyle
getComputedStyle()
注意:不要这样做。
编辑2020:这不再有效。浏览器供应商似乎对此进行了修补。由于大多数浏览器都依赖于铬,因此它可能位于其核心。
旧答案:您也可以挂接 mouseenter(当 mousecursor 位于页面内部时,在页面重新加载后触发此事件)。扩展 Corrupted 的代码应该可以做到这一点:
var x = null;
var y = null;
document.addEventListener('mousemove', onMouseUpdate, false);
document.addEventListener('mouseenter', onMouseUpdate, false);
function onMouseUpdate(e) {
x = e.pageX;
y = e.pageY;
console.log(x, y);
}
function getMouseX() {
return x;
}
function getMouseY() {
return y;
}
您还可以在 mouseleave 事件中将 x 和 y 设置为 null。因此,您可以使用光标检查用户是否在您的页面上。