如何在没有事件的情况下获取鼠标位置(无需移动鼠标)?

2022-08-29 23:46:02

是否可以在页面加载后使用JavaScript获取鼠标位置,而无需任何鼠标移动事件(无需移动鼠标)?


答案 1

真正的答案:不,这是不可能的。

好吧,我刚刚想到了一种方法。使用覆盖整个文档的 div 覆盖页面。在其中,创建(比如说)2,000 x 2,000个元素(以便伪类在IE 6中工作,请参阅),每个大小为1像素。为那些更改属性的元素创建 CSS 规则(假设)。在加载处理程序中,循环遍历 400 万个元素中的每一个,检查 / 直到找到具有悬停字体的元素。从此元素推断回来,以获得文档中的坐标。<a>:hover:hover<a>font-family<a>currentStylegetComputedStyle()

注意:不要这样做


答案 2

编辑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。因此,您可以使用光标检查用户是否在您的页面上。