此页面由社区从英文翻译而来。了解更多并加入 MDN Web Docs 社区。
鼠标事件
Baseline Widely available *
This feature is well established and works across many devices and browser versions. It’s been available across browsers since 2015年7月.
* Some parts of this feature may have varying levels of support.
MouseEvent 接口指用户与指针设备(如鼠标)交互时发生的事件。使用此接口的常见事件包括:click、dblclick、mouseup、mousedown。
MouseEvent 派生自UIEvent,UIEvent 派生自Event。虽然MouseEvent.initMouseEvent() 方法保持向后兼容性,但是应该使用MouseEvent() 构造函数创建一个MouseEvent 对象。
一些具体的事件都派生自MouseEvent:WheelEvent 和DragEvent。
In this article
构造函数
MouseEvent()创建一个新的 MouseEvent 对象。
静态属性
MouseEvent.WEBKIT_FORCE_AT_MOUSE_DOWN非标准只读正常点击所需的最小力量。
MouseEvent.WEBKIT_FORCE_AT_FORCE_MOUSE_DOWN非标准只读“用力点按”所需的最小力量。
实例属性
这个接口也从父接口UIEvent 和Event 继承了属性。
MouseEvent.altKey只读当鼠标事件触发时,如果alt 键被按下,返回
true。MouseEvent.button只读当鼠标事件触发时,如果鼠标按钮被按下(如果有的话),将会返回一个数值。
MouseEvent.buttons只读当鼠标事件触发时,如果多个鼠标按钮被按下(如果有的话),将会返回一个或者多个代表鼠标按钮的数字。
MouseEvent.clientX只读鼠标指针在视口坐标系中的 X 坐标。
MouseEvent.clientY只读鼠标指针在视口坐标系中的 Y 坐标。
MouseEvent.ctrlKey只读当鼠标事件触发时,如果control 键被按下,则返回 true。
MouseEvent.metaKey只读当鼠标事件触发时,如果meta 键被按下,则返回 true。
MouseEvent.movementX只读鼠标指针相对于最后
mousemove事件位置的 X 坐标。MouseEvent.movementY只读鼠标指针相对于最后
mousemove事件位置的 Y 坐标。MouseEvent.offsetX只读实验性鼠标指针相对于目标节点内边位置的 X 坐标。
MouseEvent.offsetY只读实验性鼠标指针相对于目标节点内边位置的 Y 坐标。
MouseEvent.pageX只读实验性鼠标指针相对于整个文档的 X 坐标。
MouseEvent.pageY只读实验性鼠标指针相对于整个文档的 Y 坐标。
MouseEvent.region只读返回被点击事件影响的点击区域的 id,如果没有区域被影响则返回 null。
MouseEvent.relatedTarget只读鼠标事件的次要目标(如果有的话)。
MouseEvent.screenX只读鼠标指针相对于全局(屏幕)的 X 坐标。
MouseEvent.screenY只读鼠标指针相对于全局(屏幕)的 Y 坐标。
MouseEvent.shiftKey只读当鼠标事件触发时,如果shift 键被按下,则返回 true。
MouseEvent.which非标准只读当鼠标事件触发时,表示被按下的按钮。
MouseEvent.mozInputSource非标准只读生成事件的类型(若干
MOZ_SOURCE_*常量如下列出)。可通过该属性获知鼠标事件是否由真实鼠标设备触发,亦或通过触摸事件触发(这可能影响处理坐标事件时的精确程度)。MouseEvent.webkitForce非标准只读点击时施加的压力量。
MouseEvent.x只读MouseEvent.clientX的别名。MouseEvent.y只读MouseEvent.clientY的别名。
实例方法
这个接口也从父接口UIEvent 和Event 继承了方法。
MouseEvent.getModifierState()返回指定修饰键的当前状态。请参照
KeyboardEvent.getModifierState()查看详情。MouseEvent.initMouseEvent()已弃用初始化创建
MouseEvent的值。如果这个事件已经被派发,这个方法将不会做任何事情。
示例
这个例子演示了使用 DOM 方法在复选框上模拟一个点击事件(使用编程的方式生成点击事件)。
HTML
<p> <label><input type="checkbox" /> 已点击</label></p><p> <button>点击我,向复选框发送一个 MouseEvent</button></p>JavaScript
function simulateClick() { // 获取要发送 click 事件的元素 const cb = document.getElementById("checkbox"); // 创建一个合成的 click MouseEvent let evt = new MouseEvent("click", { bubbles: true, cancelable: true, view: window, }); // 向复选框元素发送事件 cb.dispatchEvent(evt);}document.getElementById("button").addEventListener("click", simulateClick);结果
规范
| Specification |
|---|
| UI Events> # interface-mouseevent> |
| CSSOM View Module> # extensions-to-the-mouseevent-interface> |
| Pointer Lock 2.0> # extensions-to-the-mouseevent-interface> |
浏览器兼容性
参考
- 它的直接父级,
UIEvent。