「JavaScriptのevent処理」では、eventオブジェクトに目的の情報が含まれるのかどうかに注意しよう
JavaScriptでイベント処理を行うときは、イベントごとにイベントを処理するための関数(イベントハンドラ)を設定します。
このとき、注意しなけばならないことがあります。
それは、取得したイベントのなかに、イベントを処理する情報がすべて含まれているかといことです。
例を挙げます。
keydownイベントが発生したときに、マウスの位置を表示したいとします。
この場合は、keydownイベントだけをつかって、目標を達成することができませんでした。
理由は、keydownイベントのイベントオブジェクトには、マウスの位置に関する情報が含まれていないからです。
そこで、keydownイベントで、マウスの位置を表示したい場合には、次のようにしなければなりません。
(1)mousemoveイベントにマウス位置を取得するためのイベントハンドラを設定しておく。
(2)keydownイベントが発生したら、(1)で取得したマウスの位置情報にアクセスして、マウスに位置情報を表示する。
ほかにうまい手がないか探してみたのですが、いまのところ見つかっていません。
この解決法には、
○常にmousemoveイベントを監視する必要がある
○グローバル変数を増やさなければならない場合がある
といった問題点があります。
他に良い解決方法をご存知の方がいらっしゃいましたら、ぜひ、ご教授ください。
よろしくお願いいたします。