イベントリスナーを介してカーソルの位置を取得するにはどうすればよいですか?
つまり、ユーザーがボタンをクリックした場合、その時点でのカーソルの位置を見つけることは可能ですか? もしそうなら、どのように?
更新 私が十分に明確であったかどうかはわかりません。マウスの位置が必要ありません。私が言いたかったのは、カーソルがフォームの入力フィールド内にある場合、カーソルを見つけてフォーカスがどこにあるかを見つけたいということです。
イベントリスナーを介してカーソルの位置を取得するにはどうすればよいですか?
つまり、ユーザーがボタンをクリックした場合、その時点でのカーソルの位置を見つけることは可能ですか? もしそうなら、どのように?
更新 私が十分に明確であったかどうかはわかりません。マウスの位置が必要ありません。私が言いたかったのは、カーソルがフォームの入力フィールド内にある場合、カーソルを見つけてフォーカスがどこにあるかを見つけたいということです。
$("#button").click(function(e){
console.log(e.clientX)//relative screen
console.log(e.clientY)
console.log(e.pageX)//relative document(scroll + window position)
console.log(e.pageY)
})
もちろん、ボタンをクリックすると、フォーカスはどこからも消えます。しかし、直前のフォーカスがどこにあったかを知りたいということは理解できたようです。
次のようなことができます。
$('input, textarea, select').on('focus', function() {
console.log($(this).attr('id') + ' just got focus!!');
window.last_focus = $(this).
});
$('button').on('click', function() {
console.log('Last focus was on ' + window.last_focus.attr('id'));
});
これは非常に単純な実装です。また、なぜこれが必要なのか非常に興味があります。
何かがフォーカスを失ったときにトリガーされるイベントもありますがfocusout
、これはより適切かもしれません。
これでうまくいくはずです:http://jsfiddle.net/eTsN3/
$('button').click(function (e) {
alert(e.pageX + '/' + e.pageY);
});
現在どの入力フィールドにフォーカスがあるかは、次の方法で確認できます。
$("input:focus")
ただし、ボタンをクリックすると、入力フィールドの外側をクリックすると、クリックされたハンドラーのクリック ハンドラーを実行する前に入力フィールドがぼやけるため、これは機能しません。私がそれを示すこのフィドルを参照してください。を使用していますpreventDefault()
が、これではブレが防げません。