javascript - 在不使用鼠标事件的情况下获取当前鼠标下的元素

标签 javascript firefox-addon mouseevent xpcom

WRT 构建 Firefox 附加组件。

是否可以通过某些 XPCOM 或 javascript 方法获取鼠标下的元素? (请使用非 js-ctypes,因为这需要特定操作系统)

当用户按下 Ctrl + Shift + M 时,我想检测鼠标下的内容。

现在我在用户按下此热键时向文档添加一个 mouseover 监听器,这样我就可以在他移动鼠标时获取鼠标下方的元素,而不是鼠标下方的元素鼠标正好在他按下热键组合的时候。

最佳答案

我只是查看了获取(或存储和提供)光标位置的代码的源代码。我没有找到任何可以使用的东西(来自 Javascript、XPCOM 或其他)。我可能错过了一些东西...... MXR是你的 friend 。

但是,如果您想避免 mousemove(这通常是个好主意),您可以只查找最里面的悬停元素,例如像这样。

function getInnermostHovered() {
    var n = document.querySelector(":hover");
    var nn;
    while (n) {
        nn = n;
        n = nn.querySelector(":hover");
    }
    return nn;
}

(fiddle演示原理)

虽然这是我认为的 hack,但它在大多数时候似乎工作得很好,但如果元素通过 pointer-events 禁用了鼠标事件,则会失败。 .可能还有其他我没有想到的问题......

当然,当文档没有悬停元素时(例如,鼠标实际上不在文档中),这不会返回任何内容。

关于javascript - 在不使用鼠标事件的情况下获取当前鼠标下的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24538450/

相关文章:

javascript - 使用 Web 扩展(附加组件)的 content_scripts 中的 ES 模块

Firefox 右键菜单太长

javascript - 附加SDK : WebDAV upload from addon

c# - 按下按钮时移动鼠标会引发什么事件?

javascript - JavaScript 中 setInterval 与 setTimeout 的混淆

javascript - 基于 select (Rails) 分别获取并显示数据库行中的所有值

java - JButton 干扰 JPanel 上的鼠标监听器

javascript - 如何使 HTML Canvas 矩形随鼠标拖动调整大小?

JavaScript 正则表达式规则正在破坏 ASP.NET 缩小

javascript - 如何从一个地方获取文本然后在同一页面的其他地方呈现?