JavaScriptイベントのマウスイベント
3047 ワード
1.マウスイベント
DOM 3レベルイベントでは、9つのマウスイベントが定義されています.
clickイベントがトリガーされると、順次トリガーされます.
マウスイベントオブジェクトには、ビューポート、ページ、画面に対するマウスの座標位置情報が保存され、マウスイベントを正確に制御できます.
IE 8以降のバージョンではイベントオブジェクト上のページ座標はサポートされていませんが、ビューポート座標とスクロール情報で計算できます.
var pageX = event.pageX, pageY = event.pageY;
if(pageX === undefined) {
pageX = event.clientX + (document.body.scrollLeft || document.documentElement.scrollLeft);
}
if(pageY === undefined) {
pageXY = event.clientY + (document.body.scrollTop || document.documentElement.scrollTop);
}
mousedownイベントとmouseupイベントのeventオブジェクトにはbuttonプロパティがあり、押したり放したりするボタンを表します.DOMのbutton属性には3つの値があります.
IEとDOMは、ブラウザのhasFeature()メソッドで互換性があります.
var EventUtil = {
getButton: function(event) {
if(document.implementation.hasFeature("MouseEvents", "2.0") {
return event.button;
} else {
switch(event.button) {
case 0:
case 1:
case 3:
case 5:
case 7:
return 0;
case 2:
case 6:
return 2;
case 4:
return 1;
}
}
}
}
2.マウスホイールイベントmousewheel
mousewheelイベントに対応するeventオブジェクトには、マウスイベントのすべての標準情報に加えて、特殊なwheelDeltaプロパティも含まれています.ユーザーがマウスホイールを前にスクロールすると、wheelDeltaは120の倍数である.マウスホイールを後ろにスクロールすると、wheelDeltaは-120の倍数になります.Opera 9について5以前のバージョンでは、wheelDelta値の正負は逆です.FirefoxはDOMMouseScrollというイベントをサポートし、マウスホイールのスクロールがトリガーであり、windowオブジェクトにバブルが発生します.マウススクロールに関する情報はdetailプロパティに保存されます.マウスホイールが前にスクロールすると、このプロパティ値は-3の倍数で、後ろにスクロールすると3の倍数になります.ブラウザ環境にまたがるソリューション:
if(event.wheelDelta) {
return event.wheelDelta;
} else {
return -event.detail*40; //Firefox
}