2012-02-15 12 views
0

マウスカーソルが指し示す(最奥の)DOMオブジェクトを取得するにはどうすればよいですか?他のイベントとは異なり、キーアップイベントのe.targetは、htmlボディのような粗いオブジェクトのみを返します。 clickイベントのe.targetによって返されるものと同じように、キーアップイベントの最も内側のDOMオブジェクトを知りたいと思います。DOMオブジェクトを取得する方法

+0

[ 'document.elementFromPoint'](https://developer.mozilla.org/En/DOM:document.elementFromPoint) –

+0

キーイベントの唯一の編集可能なフィールド、またはのcontentEditable要素でターゲットを持っています。 何も選択されていない場合、またはフォーカスが当てられていない場合、ウィンドウはすべてのキーイベントのターゲットになります。 – kennebec

+0

@kennebec私はそれを知っています。問題はそれを回避する方法です。 – sawa

答えて

3

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

ライブデモ:http://jsfiddle.net/yVtsn/1/

+0

すべてのコーディングで驚くほど速い応答。 – sawa

+0

実際に、 'onmousemove'イベントを' keyup'イベントに変更すると、 'e.clientX'と' e.clientY'は定義されていないように見え、動作しません。 – sawa

+0

@ sawaはい、 'keyup'はマウスイベントではないためです。マウスイベントの外側からマウスの座標にアクセスすることが可能かどうかはわかりません。 –

3

あなたは...

DEMO

のjQueryに開放している場合、それはのように聞こえる何をdocument.elementFromPoint呼ば本当にクールな機能があります。私たちが必要なもの

は、xおよびマウスのy 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

+0

ありがとうございます、あなたの答えも良いです。 – sawa

+0

@ jsfiddle.net/kpLJRもしあなたがjquery関数を使用しないと、なぜjqueryを使用しないのでしょうか?そのため、ブラウザに加えられた変更からある程度あなたの自己を校正してください。あなたがjqueryなしでそれをする方法を知らないと、なぜあなたは悪いですか? – nodrog

関連する問題