事件
小驼峰格式书写
onClick, onChange, onSubmit ...
- 受控组件事件属性
<input name="your-input" value={inputVal} onChange={(e)=>{console.log('your-input-event-keys', e)}}>
// log
![受控组件事件](./controlled-event.png)
属性名称 | 描述 | 建议或更多 |
---|---|---|
bubbles | [boolean] | 是否冒泡传播 |
cancelable | [boolean] | 事件是否可取消 |
currentTarget | [DOM节点] | 当前事件对象在React Dom树的位置 |
defaultPrevented | [boolean] | 是否调用了preventDefault |
eventPhase | [number] | 事件处理所处阶段[0|1|2|3 ]点击查看具体 |
isTrusted | [boolean] | 事件是否由用户发起 |
target | [DOM节点] | 事件发生的节点 |
timeStamp | [number] | 事件发生的时间戳 |
nativeEvent | React事件额外添加对象 | 浏览器原生事件对象 |
preventDefault() | [function] | 阻止事件的默认浏览器行为[] |
stopPropagation() | [function] | 阻止事件在React树中的传播 |
isDefaultPrevented() | [function @return[boolean]] | 事件是否调用了preventDefault |
isPropagationStopped() | [function @return[boolean]] | 事件是否调用了stopPropagation |
persist() | 只适用于React Native | 异步读取事件属性 |
isPersistent() | 只适用于React Native | 是否调用了persist |
//log
[
...childrens,
"__reactInternalInstance$yztxbii4px",
"__reactEventHandlers$yztxbii4px",
"_wrapperState"
]
+ 原生HTMLElement
事件类型
事件名称 | 描述 | 建议或更多 |
---|---|---|
onBeforeInput | 可编辑元素被修改之前触发 <input onBeforeInput={onBeforeInput}/> |
React 模拟 before Input 事件 |
onBeforeInputCapture | 捕获阶段触发的 onBeforeInput |
|
onClick | 鼠标事件 鼠标点击事件 | 原生click事件 |
onClickCapture | 捕获阶段触发鼠标点击事件 | |
onDoubleClick | 鼠标事件 鼠标双击事件 | 原生dblclick事件 |
onDoubleClickCapture | 捕获阶段触发鼠标事件 | |
onContextMenu | 鼠标事件 用户尝试打开上下文菜单触发(通常用户点击右键或按下键盘上的菜单时键触发[不可编辑容器需选中文字]) | 原生contextmenu事件 |
onContextMenuCapture | 捕获阶段触发事件 | |
onMouseDown | 鼠标事件 鼠标按下时触发 | 原生mousedown事件 |
onMouseDownCapture | 捕获阶段触发onMouseDown 事件 |
|
onMouseUp | 鼠标事件 鼠标指针释放时触发 | 原生mouseup事件 |
onMouseUpCapture | 捕获阶段触发onMouseUp 事件 |
|
onMouseEnter | 鼠标事件 鼠标在元素内移动触发[无React捕获阶段事件] | 原生mouseenter事件 |
onMouseLeave | 鼠标事件 鼠标移动到元素外时触发[无React捕获阶段事件] | 原生mouseleave事件 |
onMouseMove | 鼠标事件 鼠标指针坐标发生变化时触发 | 原生mousemove事件 |
onMouseMoveCapture | 捕获阶段触发onMouseMove 事件 |
|
onMouseOut | 鼠标事件 当鼠标移动到元素外部或元素子元素时触发 | 原生mouseout事件 |
onMouseOutCapture | 捕获阶段触发onMouseOut 事件 |
|
onKeyDown | 键盘事件 当键盘按键(所有按键均可)按下时触发, 触发元素:input textarea 和具有contentEditable和tabindex='-1' 属性的元素` |
原生keydown事件 |
onKeyDownCapture | 捕获阶段触发onKeyDown 事件 |
|
onKeyUp | 键盘事件 当键盘按键(所有按键均可)按下时触发 | 原生keydown事件 |
onKeyUpCapture | 捕获阶段触发onKeyUp 事件 |
|
onKeyPress已弃用 | 键盘事件 | 原生keypress事件 |
onKeyPressCapture 已弃用 | 捕获阶段触发onKeyPress 事件 |
|
onBlur | 焦点事件 当元素失去焦点时触发, React 中 onBlur事件会冒泡 | 原生blur事件 |
onBlurCapture | 捕获阶段触发onBlur 事件 |
|
onFocus | 焦点事件 当元素获得焦点时触发, React 中 onFocus事件会冒泡 | 原生focus事件 |
onFocusCapture | 捕获阶段触发onFocus 事件 |
|
onWheel | 滚轮事件 当滚轮按钮旋转时触发 | 原生wheel事件 取代 mousewheel |
onWheelCapture | 捕获阶段触发onWheel 事件 |
|
onGotPointerCapture | 指针事件 当元素以编程方式捕获指针时触发 | 原生gotpointercapture事件 |
onGotPointerCaptureCapture | 捕获阶段触发onGotPointerCapture 事件 |
|
onLostPointerCapture | 指针事件 当元素停止捕获指针时触发 | 原生onlostpointercapture事件 |
onLostPointerCaptureCapture | 捕获阶段触发onLostPointerCapture 事件 |
|
onPointerCancel | 指针事件 当取消指针捕获时触发 | 原生onpointercancel事件 |
onPointerCancelCapture | 捕获阶段触发onPointerCancel 事件 |
|
onPointerDown | 指针事件 当指针激活时触发 | 原生onpointerdown事件 |
onPointerDownCapture | 捕获阶段触发onPointerDown 事件 |
|
onPointerEnter | 指针事件 当指针在元素内移动时触发 无捕获阶段事件 | 原生onpointerenter事件 |
onPointerLeave | 指针事件 当指针移动到元素外部时触发 无捕获阶段事件 | 原生onpointerleave事件 |
onPointerMove | 指针事件 当指针的坐标发生变化时触发 | 原生pointermove事件 |
onPointerMoveCapture | 捕获阶段触发onPointerMove 事件 |
|
onPointerOut | 指针事件 当指针移出元素时触发 | 原生onpointerout事件 |
onPointerOutCapture | 捕获阶段触发onPointerOut 事件 |
|
onPointerUp | 指针事件 当指针移不再活动时触发 | 原生onpointerup事件 |
onPointerUpCapture | 捕获阶段触发onPointerUp 事件 |
|
onAuxClick | 指针事件 当时输入设备的非主键(一般指左键)按下并释放的时候触发 | 原生onauxclick事件 |
onAuxClickCapture | 捕获阶段触发onAuxClick 事件 |
|
onTouchStart | 触摸事件 当触控设备触点被触摸时触发 | 原生touchstart事件 |
onTouchStartCapture | 捕获阶段触发onTouchStart 事件 |
|
onTouchEnd | 触摸事件 当触摸点被移除时触发 | 原生touchend事件 |
onTouchEndCapture | 捕获阶段触发onTouchEnd 事件 |
|
onTouchCancel | 触摸事件 当触摸事件被中断时触发(例如:触摸点太多引起的等等) | 原生touchcancel事件 |
onTouchCancelCapture | 捕获阶段触发onTouchCancel 事件 |
|
onTouchMove | 触摸事件 当触摸点位置发生变化时触发 | 原生touchmove事件 |
onTouchMoveCapture | 捕获阶段触发onTouchMove 事件 |
|
onTransitionEnd | CSS过渡事件 | 原生ontransitionend事件 |
onTransitionEndCapture | 捕获阶段触发onTransitionEnd 事件 |
|
onAnimationStart | 动画事件 css动画开始时触发 | 原生animationstart事件 |
onAnimationStartCapture | 捕获阶段触发onAnimationStart 事件 |
|
onAnimationEnd | 动画事件 css动画结束时触发,如动画完成前中止动画不触发(例如:移除元素) | 原生animationend事件 |
onAnimationEndCapture | 捕获阶段触发onAnimationEnd 事件 |
|
onAnimationIteration | 动画事件 当动画运动到最后一帧,即将开始下一个动画时触发 | 原生onanimationiteration事件 |
onAnimationIterationCapture | 捕获阶段触发onAnimationIteration 事件 |
|
onCopy | 剪贴板相关事件 当用户通过浏览器发起复制操作时时触发 [默认行为:将当前选中的数据复制到系统剪贴板] | 原生copy事件 |
onCopyCapture | 捕获阶段触发onCopy 事件 |
|
onPaste | 剪贴板相关事件 当用户通过浏览器发起粘贴操作时时触发 [通过调用 clipboardData.getData 获取数据] |
原生paste事件 |
onPasteCapture | 捕获阶段触发onPaste 事件 |
|
onCut | 剪贴板相关事件 当用户通过浏览器发起剪切操作时时触发 [通过调用 clipboardData.setData 设置数据] 不受内容的可编辑性影响 |
原生cut事件 |
onCutCapture | 捕获阶段触发onCut 事件 |
|
onBeforeInput | 输入事件 当<select>、<input>、<textarea> 的值被修改前时触发或含有contentEditable=true 属性或打开 designMode 的元素输入前时触发 React 通过模拟原生beforeinput实现 |
原生beforeinput事件 |
onBeforeInputCapture | 捕获阶段触发onBeforeInput 事件 |
|
onCompositionStart | 输入法编辑器事件 文本合成系统开始输入时触发(例如:输入法输入中文) | |
onCompositionStartCapture | 捕获阶段触发onCompositionStart 事件 |
|
onCompositionEnd | 输入法编辑器事件 文本合成系统结束时输入时触发(例如:输入法输入中文) | |
onCompositionEndCapture | 捕获阶段触发onCompositionEnd 事件 |
|
onCompositionUpdate | 输入法编辑器事件 文本合成系统将字符时输入到一段文字时触发(例如:输入法输入中文、特殊字符) | 输入需要一连串的键盘操作、语音识别或点击输入法的备选词 |
onCompositionUpdateCapture | 捕获阶段触发onCompositionUpdate 事件 |
|
仅适用于 <form> 的事件 |
||
onReset | DOM表单事件 当表单被重置时触发 | 原生reset事件 |
onResetCapture | 捕获阶段触发onReset 事件 |
|
onSubmit | DOM表单事件 当表单提交时触发 | 原生submit事件 |
onSubmitCapture | 捕获阶段触发onSubmit 事件 |
|
仅适用于 <dialog> 的事件 |
事件会冒泡 | |
onCancel ? | DOM对话框事件 当对话框被取消时触发 | 原生cancel事件 |
onCancelCapture | 捕获阶段触发onCancel 事件 |
|
onClose | DOM对话框事件 当对话框已被关闭时触发 | 原生close事件 |
onCloseCapture | 捕获阶段触发onClose 事件 |
|
仅适用于 <details> 的事件 |
事件会冒泡 | |
onToggle | DOM详细信息元素事件 当详细信息展示元素<details> 被打开/关闭切换时触发 |
原生toggle事件 |
onToggleCapture | 捕获阶段触发onToggle 事件 |
|
仅适用于 <img>、<iframe>、<object>、<embed>、<link> 和 SVG <image> 的事件 |
React中事件,事件会冒泡 | |
onLoad | DOM的部分元素事件 当元素加载完成时触发 | |
onLoadCapture | 捕获阶段触发onLoad 事件 |
|
仅适用于 <img>、<iframe>、<object>、<embed>、<link> 和 SVG <image> <audio> 、<video> 的事件 |
事件会冒泡 | |
onError | DOM元素加载失败事件 当资源无法加载时触发 | 原生error事件 |
onErrorCapture | 捕获阶段触发onError 事件 |
|
仅适用于<audio> 、<video> 的事件 |
事件会冒泡 | |
onAbort | DOM媒体元素事件 当资源未被完全加载时触发, 发生加载错误时不触发 | 原生abort事件 |
onAbortCapture | 捕获阶段触发onAbort 事件 |
|
onCanPlay | DOM媒体元素事件 当媒体终端可以播放资源(但仍需继续加载并会停止播放)时触发 | 原生canplay事件 |
onCanPlayCapture | 捕获阶段触发onCanPlay 事件 |
|
onCanPlayThrough | DOM媒体元素事件 当媒体终端可以播放资源到结束(无需继续加载至结束)时触发 | 原生canplay事件 |
onCanPlayThroughCapture | 捕获阶段触发onCanPlayThrough 事件 |
|
onPlay | DOM媒体元素事件 当媒体开始播放时触发,触发 play 事件时 |
原生play事件 |
onPlayCapture | 捕获阶段触发onPlay 事件 |
|
onPlaying | DOM媒体元素事件 当媒体资源准备播放或重新播放时触发 | 原生playing事件 |
onPlayingCapture | 捕获阶段触发onPlaying 事件 |
|
onPause | DOM媒体元素事件 当媒体资源暂停播放时触发,一般通过调用 pause() 方法触发 |
原生pause事件 |
onPauseCapture | 捕获阶段触发onPause 事件 |
|
onProgress | DOM媒体元素事件 当浏览器加载媒体资源时周期性触发 | 原生progress事件 |
onProgressCapture | 捕获阶段触发onProgress 事件 |
|
onEnded | DOM媒体元素事件 当媒体资源回放或媒体文件播放结束时触发 | 原生ended事件 |
onEndedCapture | 捕获阶段触发onEnded 事件 |
|
onRateChange | DOM媒体元素事件 当媒体资源播放速率改变时触发 | 原生ratechange事件 |
onRateChangeCapture | 捕获阶段触发onRateChange 事件 |
|
onResize | v18.x DOM媒体元素事件 当媒体资源播放速率改变时触发 | 无原生事件 |
onResizeCapture | 捕获阶段触发onResize 事件 |
|
onSeeking | DOM媒体元素事件 当搜索操作完成开始时触发(例如:视频进度条的开始点击跳转) | 原生seeking事件 |
onSeekingCapture | 捕获阶段触发onSeeking 事件 |
|
onSeeked | DOM媒体元素事件 当搜索操作完成时触发(例如:视频进度条的点击跳转完成) | 原生seeked事件 |
onSeekedCapture | 捕获阶段触发onSeeked 事件 |
|
onTimeUpdate | DOM媒体元素事件 当媒体资源的当前播放时间更新时触发 | 原生timeupdate事件 |
onTimeUpdateCapture | 捕获阶段触发onTimeUpdate 事件 |
|
onVolumeChange | DOM媒体元素事件 当媒体资源的播放音量(volume 或muted )改变时触发 |
原生volumechange事件 |
onVolumeChangeCapture | 捕获阶段触发onVolumeChange 事件 |
|
onWaiting | DOM媒体元素事件 当媒体资源由于缺少数据被暂停播放时触发 | 原生waiting事件 |
onWaitingCapture | 捕获阶段触发onWaiting 事件 |
|
onSuspend | DOM媒体元素事件 当媒体资源加载被暂停时触发 | 原生suspend事件 |
onSuspendCapture | 捕获阶段触发onSuspend 事件 |
|
onStalled | DOM媒体元素事件 当浏览器开始请求媒体资源但是未获取到时触发 | 原生seeked事件 |
onStalledCapture | 捕获阶段触发onStalled 事件 |
|
onLoadStart | DOM媒体元素事件 当浏览器开始加载资源时触发 | 原生loadstart事件 |
onLoadStartCapture | 捕获阶段触发onLoadStart 事件 |
|
onLoadedData | DOM媒体元素事件 当前播放位置的视频帧加载完成时触发 | 原生loadeddata事件 |
onLoadedDataCapture | 捕获阶段触发onLoadedData 事件 |
|
onLoadedMetadata | DOM媒体元素事件 当元数据加载完成时触发 | 原生onloadedmetadata事件 |
onLoadedMetadataCapture | 捕获阶段触发onLoadedMetadata 事件 |
|
onDurationChange | DOM媒体元素事件 当 HTMLMediaElement.duration 属性更新时触发 | 原生durationchange事件 |
onDurationChangeCapture | 捕获阶段触发onDurationChange 事件 |
|
onEmptied | DOM媒体元素事件 当媒体资源变为空时触发(如需重新加载前清空资源) | 原生emptied事件 |
onEmptiedChangeCapture | 捕获阶段触发onEmptied 事件 |
|
onEncrypted | DOM媒体元素事件 当浏览器加载的资源被加密时触发 | dom-evt-encrypted |
onEncryptedCapture | 捕获阶段触发onEncrypted 事件 |
继承的UIEvent 事件e属性 | 描述 | 建议或更多 |
---|---|---|
UIEvent.detail | [number] 事件发生时 当前鼠标点击的次数,单击、双击或更多 | 只读 有效对象:click dbclick mousedown mouseup , 其他对象的值均为 0 |
UIEvent.view | 事件发生时 生成事件的用户视图对象 默认返回 原生document.defaultView (window of document) |
只读 |
事件e属性 | 描述 | 建议或更多 |
---|---|---|
altKey | [boolean] | 只读 |
button | @return [number: 0|1|2|3|4 ] |
只读 |
buttons | 表示事件发生时被按下的鼠标按键 @return [number: 0|1|2|4|8|16 ] |
只读 |
ctrlKey | [boolean] : ctrl被按下 =>true, 否则=>false | 只读 |
clientX | 返回事件发生时客户端水平坐标 | 只读 原为长整型,后被CSSOM View Module定义为double float |
clientY | 返回事件发生时客户端垂直坐标 | 只读 原为长整型,后被CSSOM View Module定义为double float |
getModifierState(key) | 返回指定的修改键的激活状态 | 只读,浏览器兼容性差 |
metaKey | [boolean], 事件发生时 Meta 键的按下状态 true、false |
只读 |
shiftKey | [boolean], 事件发生时 shift 键的按下状态 true、false |
只读 |
screenX | [number] 事件发生时 鼠标在全局(屏幕)中的水平坐标位置 双精度浮点数 | 只读 |
screenY | [number] 事件发生时 鼠标在全局(屏幕)中的垂直坐标位置 双精度浮点数 | 只读 |
movementX | [number] 事件发生时 当前事件与上一个 鼠标事件在水平方向的位移 | 只读 示意: currentEvent.movementX = currentEvent.screenX - previousEvent.screenX |
movementY | [number] 事件发生时 当前事件与上一个 鼠标事件在垂直方向的位移 | 只读 示意: currentEvent.movementY = currentEvent.screenY - previousEvent.screenY |
pageX | [number] 事件发生时 触发事件的位置相对于整个doucment的X坐标值 受页面水平方向的滚动影响 当页面水平滚动到200px的位置,此时点击页面左边 pageX = 200 |
只读 |
pageY | [number] 事件发生时 触发事件的位置相对于整个doucment的Y坐标值受页面垂直方向的滚动影响 当页面滚动到50px的位置,此时点击页面顶部 pageY = 50 |
只读 |
relatedTarget | [number] 事件发生时 上一个dom target,不一定有目标, 没有时返回 null |
只读 示例讲解 |
包括的事件 | target | relatedTarget |
---|---|---|
focusin (en-US) | EventTarget 获取焦点 | EventTarget 失去焦点 |
focusout | EventTarget 失去焦点 | EventTarget 获取焦点 |
mouseenter | 指针设备进入的EventTarget | 指针设备离开的EventTarget |
mouseleave | 指针设备离开的 EventTarget | 指针设备进入的 EventTarget |
mouseout | 指针设备离开的 EventTarget | EventTarget |
mouseover | 指针设备进入的 EventTarget | 指针设备离开的 EventTarget |
dragenter | 指针设备进入的 EventTarget | 指针设备离开的 EventTarget |
// html
<div>
<div id="r" style="background-color: lightcoral ; width:200px ; height: 200px;"> </div>
<div id="b" style="background-color: lightblue ; width:200px ; height: 200px"> </div>
</div>
// js
const re = document.querySelector('#r')
const be = document.querySelector('#b')
re.addEventListener('mouseover', (e)=>{
console.log('re-mouseover', e.relatedTarget )
})
be.addEventListener('mouseover', (e)=>{
console.log('be-mouseover', e.relatedTarget )
})
<button onClick={(e)=>{...}}></button>
<button onDoubleClick={(e)=>{...}}></button>
继承的UIEvent 事件e属性 | 描述 | 建议或更多 |
---|---|---|
UIEvent.detail | [number] 事件发生时 当前鼠标点击的次数,单击、双击或更多 | 只读 有效对象:click dbclick mousedown mouseup , 其他对象的值均为 0 |
UIEvent.view | 事件发生时 生成事件的用户视图对象 默认返回 原生document.defaultView (window of document) |
只读 |
-- 其他属性
事件e属性 | 描述 | 建议或更多 | |||||
---|---|---|---|---|---|---|---|
altKey | [boolean] | 只读 | |||||
charCode | 非标准已弃用 | 只读 | |||||
code | 表示事件发生时键盘上被按下的物理键的信息: 按下q ,返回:keyQ ; 按下1 => Digit1 ;常用于游戏中获取输入信息 |
只读 | |||||
ctrlKey | [boolean] : 键盘上ctrl键被按下 =>true, 否则=>false | 只读 | |||||
key | 返回用户按下的物理按键的值: 按下q => q ,还与 shiftKey 等调节性按键的状态和键盘的区域 / 和布局有关 |
只读 | |||||
keyCode | 已弃用 | 只读 | |||||
getModifierState(key) | 返回指定的修改键的激活状态 | 只读,浏览器兼容性差 | |||||
metaKey | [boolean], 事件发生时 Meta 键的按下状态 true、false; windows系统:win 键, MAC: Command 键 |
只读 | |||||
shiftKey | [boolean], 事件发生时 shift 键的按下状态 true、false |
只读 | |||||
locale | React 内部属性 | 只读 | |||||
location | 键盘按下时,物理键在键盘上的位置信息 @return [unsigned long:0 | 1 | 2 | 3 | 4(移动设备的参数值) | 5(移动设备的参数值)] | 只读 示例 |
repeat | [boolean] 按键被一直按下=>true |
只读 | |||||
which | 已弃用 | 只读 |
// location
<a id="location"></a>
// windows系统
<textarea onKeyDown={onKeyDown}></textarea>
...
const onKeyDown = (e)=>{
console.log( e.location )
// 按下键盘左半部分的上侧的 x等1等键 => 0 按下键盘左半部分的最左侧ctrl等 键 => 1 按下键盘左半部分的最右侧 ctrl 等键 => 2 按下键盘右边的数字小键盘 => 3
}
继承的UIEvent 事件e属性 | 描述 | 建议或更多 |
---|---|---|
UIEvent.detail | [number] 事件发生时 当前鼠标点击的次数,单击、双击或更多 | 只读 有效对象:click dbclick mousedown mouseup , 其他对象的值均为 0 |
UIEvent.view | 事件发生时 生成事件的用户视图对象 默认返回 原生document.defaultView (window of document) |
只读 |
-- 其他属性
事件e属性 | 描述 | 建议或更多 |
---|---|---|
relatedTarget | [instance of EventTarget] 事件发生时的次要目标 | 只读 |
-- 事件对象 e extends UIEvent , 以及以下属性
继承的UIEvent 事件e属性 | 描述 | 建议或更多 |
---|---|---|
UIEvent.detail | [number] 事件发生时 当前鼠标点击的次数,单击、双击或更多 | 只读 有效对象:click dbclick mousedown mouseup , 其他对象的值均为 0 |
UIEvent.view | 事件发生时 生成事件的用户视图对象 默认返回 原生document.defaultView (window of document) |
只读 |
-- 事件对象 e extends MouseEvent , 以及以下属性
继承的 MouseEvent 事件e属性 | 描述 | 建议或更多 |
---|---|---|
继承的鼠标事件属性 |
-- 其他属性
事件e属性 | 描述 | 建议或更多 | ||
---|---|---|---|---|
deltaMode | delta 滚动值的单位, @returns [unsigned long : 0x00(像素级别) | 0x01(行级别) | 0x02(页级别)] | 只读 |
deltaX | 以deltaMode 为单位的X轴的滚动量, @returns [double] |
只读 | ||
deltaY | 以deltaMode 为单位的Y轴的滚动量, @returns [double] |
只读 | ||
deltaZ | 以deltaMode 为单位的Z轴的滚动量, @returns [double] |
只读 |
继承的UIEvent 事件e属性 | 描述 | 建议或更多 |
---|---|---|
UIEvent.detail | [number] 事件发生时 当前鼠标点击的次数,单击、双击或更多 | 只读 有效对象:click dbclick mousedown mouseup , 其他对象的值均为 0 |
UIEvent.view | 事件发生时 生成事件的用户视图对象 默认返回 原生document.defaultView (window of document) |
只读 |
-- 事件对象 e extends MouseEvent , 以及以下属性
继承的 MouseEvent 事件e属性 | 描述 | 建议或更多 |
---|---|---|
继承的鼠标事件属性 |
-- 其他属性
事件e属性 | 描述 | 建议或更多 | ||
---|---|---|---|---|
deltaMode | delta 滚动值的单位, @returns [unsigned long : 0x00(像素级别) | 0x01(行级别) | 0x02(页级别)] | 只读 |
deltaX | 以deltaMode 为单位的X轴的滚动量, @returns [double] |
只读 | ||
deltaY | 以deltaMode 为单位的Y轴的滚动量, @returns [double] |
只读 | ||
deltaZ | 以deltaMode 为单位的Z轴的滚动量, @returns [double] |
只读 |
继承的UIEvent 事件e属性 | 描述 | 建议或更多 |
---|---|---|
UIEvent.detail | [number] 事件发生时 当前鼠标点击的次数,单击、双击或更多 | 只读 有效对象:click dbclick mousedown mouseup , 其他对象的值均为 0 |
UIEvent.view | 事件发生时 生成事件的用户视图对象 默认返回 原生document.defaultView (window of document) |
只读 |
-- 其他属性
事件e属性 | 描述 | 建议或更多 | ||
---|---|---|---|---|
altKey | [boolean] altKey 激活 => true , 否则 =>false |
只读 | ||
ctrlKey | [boolean] ctrlKey 激活 => true , 否则 =>false |
只读 | ||
shiftKey | [boolean] shiftKey 激活 => true , 否则 =>false |
只读 | ||
metaKey | [boolean] metaKey 激活 => true , 否则 =>false |
只读 | ||
changedTouches | [ArraytouchStart =>新增的触模点] [touchMove =>变化了的触模点] [touchEnd =>已移除的触模点] |
只读 const touches = touchEvent.changedTouches |
||
touches | [Array |
只读 const touches = touchEvent.touches |
||
targetTouches | [ArraytouchStart 阶段的元素 |
只读 const touches = touchEvent.targetTouches |
||
<!-- | getModifierState(key) | 返回指定的修改键的激活状态 | 只读,浏览器兼容性差 | --> |
继承的UIEvent 事件e属性 | 描述 | 建议或更多 |
---|---|---|
UIEvent.detail | [number] 事件发生时 当前鼠标点击的次数,单击、双击或更多 | 只读 有效对象:click dbclick mousedown mouseup , 其他对象的值均为 0 |
UIEvent.view | 事件发生时 生成事件的用户视图对象 默认返回 原生document.defaultView (window of document) |
只读 |
-- 其他属性
事件e属性 | 描述 | 建议或更多 |
---|---|---|
elapsedTime | [float] @return 事件触发时动画的时长,不受 transition-delay 影响 |
只读 |
propertyName | [string] @return 事件触发时,与过渡动画相关的css 属性名称 | 只读 |
pseudoElement | [string] @return 事件触发时, 伪元素名称 | 只读 p::first-line |
事件e属性 | 描述 | 建议或更多 |
---|---|---|
elapsedTime | [float] @return 事件触发时动画的时长,不受 transition-delay 影响 |
只读 |
animationName | [string] @return 事件触发时动画的名称(animation-name),由 @keyframes 定义 |
只读 @keyframes moveball {...} animation-name: moveball |
pseudoElement | [string] @return 事件触发时动画相关的伪元素 | 只读 p::first-line return ::first-line |
-
//css { .ball { border-radius: 25px; width: 50px; height: 50px; background: #c00; position: absolute; top: 0; left: 0; transition: transform 0.5s; } @keyframes mymove { from {top: 0px;} to {top: 200px;} } } // component ... const YourComponent = ()=>{ let ballRef = useRef() const onMoveBall=(ev)=>{ ballRef.current.style.animation += 'mymove 3s 3'; } const onAnimationStart=(ev)=>{ console.log('onAnimationStart', ev) } ...
-- 其他属性
事件e属性 | 描述 | 建议或更多 |
---|---|---|
clipboardData | [DataTransfer(用于保存drag和drop数据的对象)] @return | 只读 需注意浏览器兼容性 |
-- clipboardData:DataTransfer
DataTransfer功能 | 描述 | 建议或更多 |
---|---|---|
描述可用于剪切和粘贴的数据类 | 通过调用 DataTransfer.setData(format, data) 实现 |
|
获取可用于paste事件的数据 | 通过调用 DataTransfer.getData(format) 实现 |
事件e属性 | 描述 | 建议或更多 |
---|---|---|
data | [DOMString] | 只读 需注意浏览器兼容性 |
事件e属性 | 描述 | 建议或更多 |
---|---|---|
data | 输入法编辑器生成的字符 | 只读 |
```javascript
// // log
react事件属性
// bubbles:true
// cancelable:true
// currentTarget:null
// data:"" //输入的内容
// defaultPrevented:false
// dispatchConfig: Object
// eventPhase:0
// isDefaultPrevented:functionThatReturnsFalse()
// isPropagationStopped:functionThatReturnsFalse()
// isTrusted:true
// nativeEvent:原生 Event 类型
// target:input#test-q
// timeStamp:540212.0999999999
// type:"compositionstart"
// _dispatchInstances: FiberNode
// _dispatchListeners: function
// _targetInst: FiberNode
// preventDefault:function
// stopPropagation:function
// ...
原生属性
// isTrusted:true
// bubbles:true
// cancelBubble:false
// cancelable:true
// composed:true
// currentTarget:null
// data:"" //输入的内容
// defaultPrevented:false
// detail:0
// eventPhase:0
// returnValue:true
// sourceCapabilities:InputDeviceCapabilities {firesTouchEvents: false}
// srcElement:input#test-q
// target:input#test-q
// timeStamp:540212.0999999999
// type:"compositionstart"
// view:Window{...}
// which:0
// ...
```
- onCompositionStart
```html
<input type="text" placeholder="疯" onCompositionStart={onCompositionStart} />
const onCompositionStart = (e)=>{
console.log('composition-1', e)
}
```
-
DOM事件 (表单、对话框、详细信息展示、图片等、媒体元素)
-
... const onFormReset =(ev)=>{ console.log('onFormReset', ev) // log : EV entends Event } ... <form onReset={onFormReset}> ... <button type="reset" >重置表单</button> </form>
--- onSubmit
extends Event//js const onFormSubmit =(e)=>{ console.log('onFormSubmit', e) // log : EV entends Event e.preventDefault() // 阻止冒泡,组件更新重新渲染 const formdata = new FormData(e.target) // 打印formdata 多选时: 打印多条 ['t-select', '1225'], ['t-select', '1224'] for(const d of formdata.entries()){ console.log('formdata', d) } }
... <form onSubmit={onFormSubmit}> ... <button type="submit" >提交表单</button> </form>
-
-- onCancel
extends Event-- onClose
extends Event<dialog ref={dialogRef} open={isOpenDialog} onclose={(ev)=>{ console.log('dialog-closed', ev) }} > <button onClick={()=>{ dialogRef.current.close() isOpenDialogSet(false) ... }}><strong>关闭对话框</strong></button> </dialog>
-
DOM详细信息元素事件
原生details元素<details onToggle={(ev)=>{console.log('onToggle-details', ev)}}> <summary>历史概论</summary> 历史概论:详细解析宋朝历史,宋徽宗的笔下历史,详细解析宋朝历史,宋徽宗的笔下历史详细解析宋朝历史,宋徽宗的笔下历史详细解析宋朝历史,宋徽宗的笔下历史 </details>
-
DOM的部分元素事件 (img、svg image 、ifame 、object 、embed、link)
... <img src="./img.png" alt="t-img" onLoad={(ev)=>{ console.log('t-img-onLoad', ev, ev.timeStamp) }} />
-
DOM元素加载失败事件 (img、svg image 、ifame 、object 、embed、link、audio 、video)
... <img src="https://path/to/open.jpg" alt="t-img" onError={(ev)=>{ console.log('t-img-onError', ev, ev.timeStamp) }} />
-
<video controls src="https://mdn.github.io/learning-area/html/multimedia-and-embedding/video-and-audio-content/rabbit320.mp4" onLoadStart={(ev)=>{console.log('t-media-onLoadStart', ev.timeStamp)}} onProgress={(ev)=>{console.log('t-media-onProgress', ev.timeStamp)}} onCanPlay={(ev)=>{console.log('t-media-onCanPlay', ev.timeStamp)}} onCanPlayThrough={(ev)=>{console.log('t-media-onCanPlayThrough', ev.timeStamp)}} onEnded={(ev)=>{console.log('t-media-onEnded', ev.timeStamp)}} />
... <video src="http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4" onCanPlay={(ev)=>{ console.log('t-media-onCanPlay', ev, ev.timeStamp) }} />
. 以秒(s)为单位的媒体长度
. 没有媒体数据HTMLMediaElement.duration = 0
. 有媒体数据,但长度未知HTMLMediaElement.duration = NaN
. 媒体流式传输并没有预定义长度HTMLMediaElement.duration = Inf
... <video ref={videoRef}>...</video> ... console.log('videoRef-duration', videoRef.current.duration)
-
-
其他事件
-
触摸事件
-
AnimationEvent
-
指定元素的事件 (