【问题标题】:Get screenX for DOM element in Javascript在 Javascript 中获取 DOM 元素的 screenX
【发布时间】:2025-12-17 00:30:02
【问题描述】:

当我在一个元素上监听 mouseover 时,我得到一个触发的事件,其中包含 screenX、clientX、pageX 和许多其他关于鼠标相对于屏幕的位置以及相对于触发事件的元素的位置。

如果我只是调用 element.mouseover(),我的处理程序会运行,但鼠标位置和其他属性都是空的。我查看了 initMouseEvent,但它需要您指定我不知道的 screenX。

我的问题是,如何在没有鼠标悬停在元素上甚至在窗口中的情况下获取这些值?

【问题讨论】:

  • 你到底想达到什么目的?
  • 我认为我的问题很清楚 - 我正在寻找一个 DOM 元素的 screenX/Y,而不需要鼠标悬停在它上面,甚至在鼠标悬停时我可以轻松获得的窗口中通过比较偏移量在元素上甚至在窗口中。
  • 那么,为什么不能只使用jQuery 的位置api.jquery.com/position 或获取X 和Y 坐标的传统方式呢?您是否试图获取所有这些信息只是为了模拟鼠标事件?
  • .position() 和 .offset() 分别相对于父级和文档,而不是屏幕。不,我不想模拟鼠标事件,但如果我可以模拟一个填充了值的事件,那将解决我的问题。
  • 这有帮助吗? *.com/questions/683339/…

标签: javascript dom


【解决方案1】:

在 Javascript 中:

function getScreenCoords(element) {
    let rect = element.getBoundingClientRect();
    return {
            x: window.screenX + rect.left,
            y: window.screenY + rect.top
        }
}

【讨论】: