MouseEvent - 表示用户与指示设备(如鼠标)交互发生的事件
MouseEvent
接口表示由于用户与指示设备(如鼠标)交互而发生的事件。使用该接口的常见事件包括:click
, dblclick
, mouseup
, mousedown
。
MouseEvent
直接继承自 UIEvent
,进而派生自 Event
。虽然 MouseEvent.initMouseEvent()
方法保持向后兼容性,但是创建 MouseEvent
对象的应使用的 MouseEvent()
构造函数来完成。
一些更具体的基于 MouseEvent
的事件,包括 WheelEvent
和 DragEvent
。
构造函数
MouseEvent()
创建一个 MouseEvent
对象。
属性
该接口也继承了其父接口 UIEvent
和 Event
的属性。
MouseEvent.altKey
只读
如果 alt 键在鼠标事件触发时按下了,则返回 true
。
MouseEvent.button
只读
当鼠标事件触发时按下的按钮数字(如果适用)。
MouseEvent.buttons
只读
当鼠标事件触发时按下的按钮(如果有的话)。
MouseEvent.clientX
只读
本地(DOM 内容)坐标中鼠标指针的 X 坐标。
MouseEvent.clientY
只读
本地(DOM 内容)坐标中鼠标指针的 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.mozPressure
只读
在产生事件时施加在触摸或平板设备上的压力;这个值在 0.0
(最小压力)到 1.0
(最大压力)之间的范围内。您应该使用 PointerEvent
并查看它的 pressure
属性,而不是使用这个不废弃的(和非标准的)属性。
MouseEvent.mozInputSource
只读
生成事件的设备类型。例如,这可以让您确定鼠标事件是由实际的鼠标生成的还是由触摸事件生成的(这可能会影响解释与该事件关联的坐标的准确性)。
MouseEvent.webkitForce
只读
点击时施加的压力的量
MouseEvent.x
只读
MouseEvent.clientX
的别名。
MouseEvent.y
只读
MouseEvent.clientY
的别名。
常量
MouseEvent.WEBKIT_FORCE_AT_MOUSE_DOWN
只读
正常点击所需的最小力。
MouseEvent.WEBKIT_FORCE_AT_FORCE_MOUSE_DOWN
只读
强制点击所需的最小力。
方法
该接口也继承了其父接口 UIEvent
和 Event
的方法。
MouseEvent.getModifierState()
返回指定修改键的当前状态。详情请参阅 KeyboardEvent.getModifierState
()。
MouseEvent.initMouseEvent()
初始化创建的 MouseEvent
的值。如果已经分派了事件,则此方法不执行任何操作。
实例
该实例使用 DOM 方法,模拟一个在复选框上的点击(即编程产生一个点击事件)。
<p><label><input type="checkbox" id="checkbox"> 已选中</label>
<p><button id="button">点击我</button>
<script>
function simulateClick() {
var evt = new MouseEvent("click", {
bubbles: true,
cancelable: true,
view: window
});
var cb = document.getElementById("checkbox"); // 要点击的元素
var canceled = !cb.dispatchEvent(evt);
if(canceled) {
// 有处理程序调用了 preventDefault
alert("已取消");
} else {
// 没有处理程序调用了 preventDefault
alert("未取消");
}
}
document.getElementById("button").addEventListener('click', simulateClick);
</script>
规范
规范 | 状态 | 备注 |
---|---|---|
CSS Object Model (CSSOM) View Module MouseEvent 的定义 |
工作草案 | 将 MouseEvent 从 long 重新定义为 double 。这意味着 PointerEvent 的 pointerType 将是一个 double 。 |
Pointer Lock MouseEvent 的定义 |
候选推荐 | 基于 Document Object Model (DOM) Level 3 Events Specification,加入 movementX 和 movementY 属性。 |
CSS Object Model (CSSOM) View Module MouseEvent 的定义 |
工作草案 | 基于 Document Object Model (DOM) Level 3 Events Specification,加入 offsetX 和 offsetY ,pageX 和 pageY ,x 和 y 属性。将屏幕,页面,客户端和坐标(x 和 y)属性从 long 重新定义为 double 。 |
UI Events MouseEvent 的定义 |
工作草案 | - |
Document Object Model (DOM) Level 3 Events Specification MouseEvent 的定义 |
已过时 | 基于 Document Object Model (DOM) Level 2 Events Specification,加入 MouseEvent() 的构造器, getModifierState() 方法和 buttons 属性。 |
Document Object Model (DOM) Level 2 Events Specification MouseEvent 的定义 |
已过时 | 初始定义。 |
桌面浏览器兼容性
特性 | Chrome | Edge | Firefox | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|---|
基础支持 | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 |
MouseEvent() constructor | 47 | 未知 | 11 | 不支持 | 支持 | 支持 |
altKey | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 |
button | 1 | 支持 | 1 | 9 支持1 | 支持 | 3.1 |
buttons | 43 | 支持 | 支持2 | 9 | 支持 | 不支持 |
clientX | 支持 | 支持 | 支持 | 6 | 支持 | 支持 |
clientY | 支持 | 支持 | 支持 | 6 | 支持 | 支持 |
ctrlKey | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 |
getModifierState | 47 | 支持 | 未知 | 未知 | 未知 | 未知 |
initMouseEvent | 支持 | 支持 | 支持 | 未知 | 支持 | 未知 |
metaKey | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 |
movementX | 37 22 — 37 webkit | 支持 | 41 1 — 41 moz | 不支持 | 未知 | 不支持 |
movementY | 37 22 — 37 webkit | 支持 | 41 1 — 41 moz | 不支持 | 未知 | 不支持 |
offsetX | 支持 | 支持 | 39 | 6 | 支持 | 支持 |
offsetY | 支持 | 支持 | 39 | 6 | 支持 | 支持 |
pageX | 45 | 支持 | 支持 | 9 | 支持 | 支持 |
pageY | 45 | 支持 | 支持 | 9 | 支持 | 支持 |
region | 支持 | 未知 | 30 | 不支持 | 不支持 | 不支持 |
relatedTarget | 支持 | 支持 | 48 | 支持 | 支持 | 支持 |
screenX | 支持 | 支持 | 支持 | 6 | 支持 | 支持 |
screenY | 支持 | 支持 | 支持 | 6 | 支持 | 支持 |
shiftKey | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 |
which | 1 | 支持 | 13 | 9 | 5 | 1 |
x | 支持 | 支持 | 53 | 6 | 支持 | 支持 |
y | 支持 | 支持 | 53 | 6 | 支持 | 支持 |
移动浏览器兼容性
特性 | Android | Chrome for Android | Edge mobile | Firefox for Android | IE mobile | Opera Android | iOS Safari |
---|---|---|---|---|---|---|---|
基础支持 | 支持 | 支持 | 支持 | 支持 | 未知 | 支持 | 支持 |
MouseEvent() constructor | 47 | 47 | 未知 | 14 | 未知 | 支持 | 支持 |
altKey | 未知 | 未知 | 支持 | 未知 | 未知 | 未知 | 未知 |
button | 未知 | 未知 | 支持 | 未知 | 未知 | 未知 | 未知 |
buttons | 不支持 | 不支持 | 支持 | 未知 | 未知 | 未知 | 不支持 |
clientX | 支持 | 支持 | 支持 | 支持 | 未知 | 支持 | 支持 |
clientY | 支持 | 支持 | 支持 | 支持 | 未知 | 支持 | 支持 |
ctrlKey | 未知 | 未知 | 支持 | 未知 | 未知 | 未知 | 未知 |
getModifierState | 47 | 47 | 支持 | 未知 | 未知 | 未知 | 未知 |
initMouseEvent | 支持 | 支持 | 支持 | 支持 | 未知 | 支持 | 未知 |
metaKey | 未知 | 未知 | 支持 | 未知 | 未知 | 未知 | 未知 |
movementX | 37 | 37 支持 — 37 webkit | 支持 | 41 4 — 41 moz | 未知 | 未知 | 不支持 |
movementY | 37 | 37 支持 — 37 webkit | 支持 | 41 4 — 41 moz | 未知 | 未知 | 不支持 |
offsetX | 支持 | 支持 | 支持 | 43 | 未知 | 未知 | 未知 |
offsetY | 支持 | 支持 | 支持 | 43 | 未知 | 未知 | 未知 |
pageX | 45 | 45 | 支持 | 未知 | 未知 | 未知 | 未知 |
pageY | 45 | 45 | 支持 | 未知 | 未知 | 未知 | 未知 |
region | 不支持 | 不支持 | 未知 | 30 | 未知 | 不支持 | 不支持 |
relatedTarget | 未知 | 未知 | 支持 | 未知 | 未知 | 未知 | 未知 |
screenX | 支持 | 支持 | 支持 | 支持 | 未知 | 支持 | 支持 |
screenY | 支持 | 支持 | 支持 | 支持 | 未知 | 支持 | 支持 |
shiftKey | 未知 | 未知 | 支持 | 未知 | 未知 | 未知 | 未知 |
which | 支持 | 支持 | 支持 | 43 | 未知 | 支持 | 支持 |
x | 未知 | 未知 | 支持 | 53 | 未知 | 未知 | 未知 |
y | 未知 | 未知 | 支持 | 53 | 未知 | 未知 | 未知 |
1. 版本 9 之前使用不同的约定。
2. 限制取决于操作系统。
3. 在 mousemove
事件中,which
属性错误的始终设置为 1
。
相关链接
- 它的直接父类,
UIEvent
。 PointerEvent
:用于高级指针事件,包括多点触摸。