タイムアウト コールバックでマウスの位置を取得したい。
私が知る限り、これは直接行うことはできません。回避策の 1 つは、document.body に onmousemove イベントを設定し、この位置を保存して後で取得することです。ただし、これはかなり高価であり、最もクリーンなアプローチではありません。
タイムアウト コールバックでマウスの位置を取得したい。
私が知る限り、これは直接行うことはできません。回避策の 1 つは、document.body に onmousemove イベントを設定し、この位置を保存して後で取得することです。ただし、これはかなり高価であり、最もクリーンなアプローチではありません。
@Oliと同じことをする必要があると思いますが、jQueryを使用している場合は、はるかに簡単です。
http://docs.jquery.com/Tutorials:Mouse_Position
<script type="text/javascript">
jQuery(document).ready(function(){
$().mousemove(function(e){
$('#status').html(e.pageX +', '+ e.pageY);
});
})
</script>
あなたが説明したように、それを行う最も簡単な方法は、本体に onmousemove イベント ハンドラーを設定することです。思ったよりもコストがかからない: 座標を格納するための計算はほとんど行われず、マウスが動くと 1 秒間に 50 ~ 100 回イベントが発生します。また、一般的なユーザーは、Web ページを表示するときに常にマウスを動かすことはないと思います。
次のスクリプトは、イベント ハンドラーのカウントに役立ちます。私のマシンでは、Firefox でマウスを動かすと、CPU 使用率が 5% から 10% 増加しました。
<script type="text/javascript">
jQuery(document).ready(function(){
var count = 0;
$().mousemove(function(e){ count += 1; });
$().click(function(e){ $('#status').html(count); });
});
</script>
直接の答えはノーですが、あなたが正しく言うように、すべてにイベントをアタッチし、それに応じてポーリングすることができます。すべての onmousemove インスタンスで本格的なプログラミングを行うのはコストがかかるため、ページの周りにいくつかのゾーンを作成し、onmouseover イベントをポーリングする方がよい場合があります。
別の代替手段は、(これがまったく機能するかどうかはわかりませんが)定期的なタイムアウトを次のように設定することです。
Uberhack でもうまくいくかもしれません。