PointerEvent - 表示由指针产生的 DOM 事件的状态

PointerEvent 接口表示由指针产生的 DOM 事件的状态,例如接触点的几何形状,生成事件的设备类型,施加在接触面上的压力大小等。

指针是输入设备(例如可触摸表面上的鼠标,笔或接触点)硬件层抽象。指针可以指向屏幕等接触表面上的特定坐标(或一组坐标)。

指针的命中测试是浏览器用来确定指针事件的目标元素的过程。通常,这是通过考虑指针的位置以及屏幕媒体上文档中元素的视觉布局来确定的。

构造函数

PointerEvent()

创建一个合成且不受信任的 PointerEvent

属性

该接口继承了 MouseEventEvent 的属性。

PointerEvent.pointerId 只读

触发事件的指针的唯一标识符。

PointerEvent.width 只读

指针的接触几何形状的宽度(X 轴上的幅度),以 CSS 像素为单位。

PointerEvent.height 只读

指针的接触几何形状的高度(Y 轴上的幅度),以 CSS 像素为单位。

PointerEvent.pressure 只读

指针输入的归一化压力在 0 到 1 的范围内,其中 0 和 1 分别表示硬件能够检测到的最小和最大压力。

PointerEvent.tangentialPressure 只读

指针输入的标准化切向压力(也称为机筒压力或气缸压力)在 -1 至 1 的范围内,其中 0 是控件的中立位置。

PointerEvent.tiltX 只读

YZ 平面与包含指针(例如笔针)轴和 Y 轴的平面之间的平面角度(以度为单位,在 -90 到 90 之间)。

PointerEvent.tiltY 只读

XZ 平面与包含指针(例如笔针)轴和 X 轴的平面之间的平面角度(以度为单位,在 -90 到 90 之间)。

PointerEvent.twist 只读

指针(例如笔针)围绕其主轴的顺时针旋转(以度为单位),取值范围为 0 到 359。

PointerEvent.pointerType 只读

指示触发事件的设备类型(鼠标,笔,触摸等)

PointerEvent.isPrimary 只读

指示指针是否为此指针类型的主指针。

方法

PointerEvent.getCoalescedEvents()

返回已合并到调度的 pointermove 事件中的所有 PointerEvent 实例的序列。

指针事件类型

PointerEvent 接口具有几种事件类型。要确定触发哪个事件,请查看事件的 type 属性。

注意: 需要注意的是,在许多情况下,指针和鼠标事件会一起触发(为了让非指针特定的代码仍与用户交互)。如果只使用指针事件,则应调用 event.preventDefault(),以防止鼠标事件也被发送。

pointerover

将定点设备移至元素的点击测试边界时,将触发此事件。

pointerenter

当将指针设备移动到元素或其子孙之一的命中测试边界时,会触发此事件,包括由于不支持悬停的设备发出的指标下降事件(请参见 pointerdown)。此事件类型与指针切换类似,但不同之处在于它不会冒泡。

pointerdown

当指针变为 active 时将触发该事件。对于鼠标,当设备从没有按下的按钮过渡到至少按下的一个按钮时会触发。对于触摸,当与数字转换器进行物理接触时会触发。对于笔,当手写笔与数字转换器物理接触时会触发。

pointermove

指针更改坐标时将触发此事件。

pointerup

当指针不再处于 active 状态时,将触发此事件。

pointercancel

如果浏览器断定指针将不再能够生成事件(例如,相关设备已停用),则会触发该事件。

pointerout

触发此事件的原因有几个,其中包括:将指针设备移出元素的命中测试边界;为不支持悬停的设备触发指标事件(请参见 pointerup);触发 pointercancel 事件后(请参见 pointercancel);当笔针离开悬停范围时,可由数字化仪检测到。

pointerleave

将定点设备移出元素的点击测试边界时,将触发此事件。对于笔式设备,当手写笔离开数字化仪可检测到的悬停范围时,将触发此事件。

gotpointercapture

当元素接收指针捕获时将触发此事件。

lostpointercapture

释放指针的指针捕获后,将触发此事件。

全局事件处理程序

GlobalEventHandlers.onpointerover

pointerover 事件的全局事件处理程序事件。

GlobalEventHandlers.onpointerenter

pointerenter 事件的全局事件处理程序事件。

GlobalEventHandlers.onpointerdown

pointerdown 事件的全局事件处理程序事件。

GlobalEventHandlers.onpointermove

pointermove 事件的全局事件处理程序事件。

GlobalEventHandlers.onpointerup

pointerup 事件的全局事件处理程序事件。

GlobalEventHandlers.onpointercancel

pointercancel 事件的全局事件处理程序事件。

GlobalEventHandlers.onpointerout

pointerout 事件的全局事件处理程序事件。

GlobalEventHandlers.onpointerleave

pointerleave 事件的全局事件处理程序事件。

实例

每个属性,事件类型和全局事件处理程序的实例都包含在它们各自的参考页中。

规范

规范 状态 备注
Pointer Events – Level 3
PointerEvent 的定义
编者的草案 最新草稿。
Pointer Events – Level 2
PointerEvent 的定义
推荐 增加了 twisttangentialPressure 属性。
Pointer Events
PointerEvent 的定义
已过时 初始定义。

桌面浏览器兼容性

特性ChromeEdgeFirefoxInternet ExplorerOperaSafari
基础支持5512

59

41

11

10 MS 1

4213
PointerEvent() 构造函数5512

59

41

11

10 MS 1

4213
getCoalescedEvents58 不支持59 不支持45 不支持
height5512

59

41

11

102

4213
isPrimary5512

59

41

104213
pointerId5512

59

41

104213
pointerType5512

59

41

11

103

4213
pressure5512

59

41

11

104

4213
tangentialPressure58 不支持

59

54

不支持4513
tiltX5512

59

41

104213
tiltY5512

59

41

104213
twist5818

59

54

不支持4513
width5512

59

41

11

102

4213

移动浏览器兼容性

特性AndroidChrome for AndroidEdge mobileFirefox for AndroidIE mobileOpera AndroidiOS Safari
基础支持5555 未知41 未知4213
PointerEvent() 构造函数5555 未知41 未知4213
getCoalescedEvents5858 未知59 未知43 不支持
height5555 未知41 未知4213
isPrimary5555 未知41 未知4213
pointerId5555 未知41 未知4213
pointerType5555 未知41 未知4213
pressure5555 未知41 未知4213
tangentialPressure5858 未知54 未知4313
tiltX5555 未知41 未知4213
tiltY5555 未知41 未知4213
twist5858 未知54 未知4313
width5555 未知41 未知4213

1. 请参阅 MSDN Pointer 事件更新

2. 返回以屏幕像素而不是 CSS 文档像素为单位的值。

3. 返回整数枚举而不是字符串。

4. 在不支持压力的硬件上返回 0 而不是 0.5。

相关链接