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/