2012-02-15 161 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