2012-02-15 108 views
0

如何获取鼠标光标指向的(最内层的)DOM对象?不像其他事件,键入事件的e.target只返回一个粗略的对象,如html正文。我想知道keyup事件中最内层的DOM对象,就像click事件的e.target返回的那样。如何获取DOM对象

+0

['document.elementFromPoint'](https://developer.mozilla.org/En/DOM:document.elementFromPoint) – 2012-02-15 01:18:11

+0

关键事件在编辑字段或contentEditable元素中只有一个目标。 如果没有选择或关注任何内容,则该窗口是所有关键事件的目标。 – kennebec 2012-02-15 03:19:39

+0

@kennebec我知道。问题是如何避开它。 – sawa 2012-02-15 03:57:27

回答

3

这里:

document.body.onmousemove = function (e) { 
    var topmost = document.elementFromPoint(e.clientX, e.clientY); 
}; 

现场演示:http://jsfiddle.net/yVtsn/1/

+0

所有编码都非常快速的响应。 – sawa 2012-02-15 01:33:56

+0

实际上,当我将'onmousemove'事件更改为'keyup'事件时,'e.clientX'和'e.clientY'似乎变得未定义,并且不起作用。 – sawa 2012-02-15 02:32:15

+0

@sawa是的,因为'keyup'不是鼠标事件。我不确定是否可以从鼠标事件之外访问鼠标坐标。 – 2012-02-15 03:42:37

3

如果你打开的jQuery ...

DEMO

有一个叫document.elementFromPoint该做的事情听起来真的很酷的功能。

我们需要的是找到X和鼠标ŸCOORDS,然后使用这些值调用它:

var x = event.clientX, y = event.clientY, 
    elementMouseIsOver = document.elementFromPoint(x, y); 

document.elementFromPoint

jQuery event object

+2

你不需要jQuery,如果你不知道如何做到这一点,没有jQuery,你是不好的。 http://jsfiddle.net/kpLJR/ – copy 2012-02-15 01:21:30

+0

谢谢,你的回答也很好。 – sawa 2012-02-15 01:32:16

+0

@ jsfiddle.net/kpLJR如果你使用jQuery,为什么你不使用jquery函数,以便在某种程度上从浏览器的变化中证明你的自我?如果你不知道如何在没有jQuery的情况下做到这一点,你为什么会这么做? – nodrog 2012-02-15 01:34:45