---
title: 鼠标事件
slug: Web/API/MouseEvent
translation_of: Web/API/MouseEvent
---
{{APIRef("DOM Events")}}
MouseEvent
接口指用户与指针设备( 如鼠标 )交互时发生的事件。使用此接口的常见事件包括:{{event("click")}},{{event("dblclick")}},{{event("mouseup")}},{{event("mousedown")}}。
MouseEvent
派生自 {{domxref("UIEvent")}},{{domxref("UIEvent")}} 派生自 {{domxref("Event")}}。虽然 MouseEvent.initMouseEvent()
方法保持向后兼容性,但是应该使用 MouseEvent()
构造函数创建一个 MouseEvent
对象。
一些具体的事件都派生自 MouseEvent
:{{domxref("WheelEvent")}} 和{{domxref("DragEvent")}}。
{{InheritanceDiagram}}
构造函数
- {{domxref("MouseEvent.MouseEvent", "MouseEvent()")}}
- 生成一个新的MouseEvent对象
属性
这个接口也继承了{{domxref("UIEvent")}} 和 {{domxref("Event")}}原型上的方法,
- {{domxref("MouseEvent.altKey")}} {{readonlyinline}}
- 当鼠标事件触发的时,如果alt 键被按下,返回true;
- {{domxref("MouseEvent.button")}} {{readonlyinline}}
- 当鼠标事件触发的时,如果鼠标按钮被按下(如果有的话),将会返回一个数值。
- {{domxref("MouseEvent.buttons")}} {{readonlyinline}} {{gecko_minversion_inline("15.0")}}
-
当鼠标事件触发的时,如果多个鼠标按钮被按下(如果有的话),将会返回一个或者多个代表鼠标按钮的数字。
- {{domxref("MouseEvent.clientX")}} {{readonlyinline}}
- 鼠标指针在点击元素(DOM)中的X坐标。
- {{domxref("MouseEvent.clientY")}} {{readonlyinline}}
- 鼠标指针在点击元素(DOM)中的Y坐标。
- {{domxref("MouseEvent.ctrlKey")}} {{readonlyinline}}
- 当鼠标事件触发时,如果 control 键被按下,则返回 true;
- {{domxref("MouseEvent.metaKey")}} {{readonlyinline}}
- 当鼠标事件触发时,如果 meta键被按下,则返回 true;
- {{domxref("MouseEvent.movementX")}} {{readonlyinline}}
- 鼠标指针相对于最后{{event("mousemove")}}事件位置的X坐标。
- {{domxref("MouseEvent.movementY")}} {{readonlyinline}}
- 鼠标指针相对于最后{{event("mousemove")}}事件位置的Y坐标。
- {{domxref("MouseEvent.offsetX")}} {{readonlyinline}}{{experimental_inline}}
- 鼠标指针相对于目标节点内边位置的X坐标
- {{domxref("MouseEvent.offsetY")}} {{readonlyinline}}{{experimental_inline}}
- 鼠标指针相对于目标节点内边位置的Y坐标
- {{domxref("MouseEvent.pageX")}} {{readonlyinline}}{{experimental_inline}}
- 鼠标指针相对于整个文档的X坐标;
- {{domxref("MouseEvent.pageY")}} {{readonlyinline}}{{experimental_inline}}
- 鼠标指针相对于整个文档的Y坐标;
- {{domxref("MouseEvent.region")}} {{readonlyinline}}
- 返回被点击事件影响的点击区域的id,如果没有区域被影响则返回null。
- {{domxref("MouseEvent.relatedTarget")}} {{readonlyinline}}
-
鼠标事件的次要目标(如果有的话)
- {{domxref("MouseEvent.screenX")}} {{readonlyinline}}
- 鼠标指针相对于全局(屏幕)的X坐标;
- {{domxref("MouseEvent.screenY")}} {{readonlyinline}}
- 鼠标指针相对于全局(屏幕)的Y坐标;
- {{domxref("MouseEvent.shiftKey")}} {{readonlyinline}}
- 当鼠标事件触发时,如果 shift 键被按下,则返回 true;
- {{domxref("MouseEvent.which")}} {{non-standard_inline}} {{readonlyinline}}
- 当鼠标事件触发时,表示被按下的按钮。
- {{domxref("MouseEvent.mozPressure")}} {{non-standard_inline()}} {{readonlyinline}}
- 点击事件发生时施加在触摸屏或者平板设备的压力量。这个数值在0.0(最小压力)和1.0(最大压力)之间。
- {{domxref("MouseEvent.mozInputSource")}} {{non-standard_inline()}} {{readonlyinline}}
- 生成事件的类型(若干
MOZ_SOURCE_*
常量如下列出)。可通过该属性获知鼠标事件是否由真实鼠标设备触发,亦或通过触摸事件触发(这可能影响处理坐标事件时的精确程度)。
- {{domxref("MouseEvent.webkitForce")}} {{non-standard_inline()}} {{readonlyinline}}
- 点击时施加的压力量。
- {{domxref("MouseEvent.x")}} {{experimental_inline}}{{readonlyinline}}
- {{domxref("MouseEvent.clientX")}}的别名。
- {{domxref("MouseEvent.y")}} {{experimental_inline}}{{readonlyinline}}
- {{domxref("MouseEvent.clientY")}}的别名。
常量
- {{domxref("MouseEvent.WEBKIT_FORCE_AT_MOUSE_DOWN")}} {{non-standard_inline}}{{readonlyinline}}
- 正常点击所需的最小力量
- {{domxref("MouseEvent.WEBKIT_FORCE_AT_FORCE_MOUSE_DOWN")}} {{non-standard_inline}}{{readonlyinline}}
- 强制点击所需的最小力量
方法
这个接口也继承了它的副方法{{domxref("UIEvent")}} 和{{domxref("Event")}}.
- {{domxref("MouseEvent.getModifierState()")}}
- 返回指定修饰键的当前状态。请参照{{domxref("KeyboardEvent.getModifierState")}}() 查看详情。
- {{domxref("MouseEvent.initMouseEvent()")}} {{deprecated_inline}}
- 初始化创建MouseEvent的值。如果这个事件已经被分派,这个方法将不会做任何事情。
示例
这个例子演示了使用DOM方法在复选框上模拟一个点击事件(使用编程的方式生成点击事件)。
function simulateClick() {
var evt = new MouseEvent("click", {
bubbles: true,
cancelable: true,
view: window,
});
var cb = document.getElementById("checkbox"); //element to click on
var canceled = !cb.dispatchEvent(evt);
if(canceled) {
// A handler called preventDefault
alert("canceled");
} else {
// None of the handlers called preventDefault
alert("not canceled");
}
}
document.getElementById("button").addEventListener('click', simulateClick);
<p><label><input type="checkbox" id="checkbox"> Checked</label>
<p><button id="button">Click me</button>
点击按钮查看演示:
{{ EmbedLiveSample('示例', '', '', '') }}
规范
Specification |
Status |
Comment |
{{SpecName('CSSOM View','#extensions-to-the-mouseevent-interface', 'MouseEvent')}} |
{{Spec2('CSSOM View')}} |
Redefines MouseEvent from long to double. This means that a PointerEvent whose pointerType is mouse will be a double. |
{{SpecName('Pointer Lock','#extensions-to-the-mouseevent-interface','MouseEvent')}} |
{{Spec2('Pointer Lock')}} |
From {{SpecName('DOM3 Events')}}, added movementX and movementY properties. |
{{SpecName('CSSOM View', '#extensions-to-the-mouseevent-interface', 'MouseEvent')}} |
{{Spec2('CSSOM View')}} |
From {{SpecName('DOM3 Events')}}, added offsetX and offsetY , pageX and pageY , x, and y properties. Redefined screen, page, client and coordinate (x and y) properties as double from long . |
{{SpecName('DOM3 Events','#events-mouseevents','MouseEvent')}} |
{{Spec2('DOM3 Events')}} |
From {{SpecName('DOM2 Events')}}, added the MouseEvent() constructor, the getModifierState() method and the buttons property. |
{{SpecName('DOM2 Events','#Events-MouseEvent','MouseEvent')}} |
{{Spec2('DOM2 Events')}} |
Initial definition. |
浏览器兼容性
{{Compat("api.MouseEvent")}}
参考
- 它的直接父级,{{domxref("UIEvent")}}.