JavaScriptイベントオブジェクト: 現(xiàn)在のイベント
イベント オブジェクトを取得する
W3C 仕様では、イベント オブジェクトはイベント処理関數(shù)で渡されます。ただし、IE9.0 以降ではこのメソッドがサポートされます。以下のバージョンでは、イベント オブジェクトをウィンドウ オブジェクトのプロパティとして使用する必要があります。
◆ W3C 仕様に準(zhǔn)拠したブラウザでは、イベント オブジェクトはイベント処理関數(shù)のパラメータを通じて渡されます。
構(gòu)文:
elementObject.OnXXX=function(e){ var eve=e; // 聲明一個變量來接收 event 對象 }
上記でバインドされたイベント処理関數(shù)では、パラメーター e を使用してイベント オブジェクトを渡し、変數(shù) eve は現(xiàn)在のイベントを表します。この処理は JavaScript によって自動的に行われます。
たとえば、イベントが発生したときにマウスの座標(biāo)を取得するには、次のように記述できます:
<div id="demo">在這里單擊</div> <script type="text/javascript"> document.getElementById("demo").onclick=function(e){ var eve=e; var x=eve.x; // X坐標(biāo) var y=eve.y; // Y坐標(biāo) alert("X坐標(biāo):"+x+"\nY坐標(biāo):"+y); } </script>
次のデモを參照してください
◆ IE8.0以下の場合、eventは次のように使用する必要がありますウィンドウオブジェクトのプロパティ。
構(gòu)文:
elementObject.OnXXX=function(){ var eve=window.event; // 聲明一個變量來接收event對象 }
たとえば、イベントが発生したときにマウスの座標(biāo)を取得するには、次のように記述できます:
<div id="demo">在這里單擊</div> <script type="text/javascript"> document.getElementById("demo").onclick=function(){ var eve=window.event; var x=eve.x; // X坐標(biāo) var y=eve.y; // Y坐標(biāo) alert("X坐標(biāo):"+x+"\nY坐標(biāo):"+y); } </script>
次のデモを參照してください:
必要に応じて、次のことがわかります。イベントが発生した DOM 要素、マウス座標(biāo)、キーボードのキーなど、現(xiàn)在のイベントのステータスに関連する座標(biāo)を取得するには、ブラウザーの互換性の問題に対処する必要があります。
典型的なコード:
elementObject.OnXXX=function(e){ var eve = e || window.event; // 使用 || 運算取得event對象 }
ここで注意すべき點は、 || 演算の 2 つのオペランドの 1 つが true の場合、そのオペランドの値は必ずしもブール型であるとは限らないということです。自體は返卻されます。上記のコードでは、event が関數(shù)のパラメーターとともに渡される場合、e は true、eve=e、それが window オブジェクトのプロパティとして使用される場合、window.event は true、eve=window.event になります。
マウス座標(biāo)を取得するための上記のコードを改善して、すべてのブラウザーと互換性を持たせます:
<div id="demo">在這里單擊</div> <script type="text/javascript"> document.getElementById("demo").onclick=function(e){ var eve = e || window.event; var x=eve.x; var y=eve.y; alert("X坐標(biāo):"+x+"\nY坐標(biāo):"+y); } </script>
次のデモを參照してください:
イベント オブジェクトの共通プロパティとメソッド
event オブジェクトは、現(xiàn)在のイベントを表すために使用されます。イベントには、マウスがクリックされたときの位置、キーボードが押されたときのキー、イベントが発生する HTML 要素、デフォルトのアクションを?qū)g行するかどうか、などの多くの狀態(tài)があります。バブルなど、これらはすべてイベントオブジェクトのプロパティとメソッドが存在します。対応するステータスを取得するには、対応するプロパティとメソッドにアクセスする必要があります。
event オブジェクトの共通プロパティとメソッド (W3C 仕様)
上記の W3C 仕様で規(guī)定されているプロパティとメソッドに加えて、IE ブラウザは以下のプロパティもサポートしています。
イベントオブジェクトのプロパティ(IE固有)