React专栏:React 事件

事件

小驼峰格式书写
onClick, onChange, onSubmit ...

  1. 受控组件事件属性

      <input name="your-input" value={inputVal} onChange={(e)=>{console.log('your-input-event-keys', e)}}>

      // log 

      ![受控组件事件](./controlled-event.png)
  1. 非受控组件事件属性(ref.current)

  2. Event

属性名称 描述 建议或更多
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媒体元素事件 当媒体资源的播放音量(volumemuted)改变时触发 原生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事件
  • 鼠标事件 (DragEvent)

    • 事件对象 e extends UIEvent , 以及以下属性
继承的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 只读 示例讲解
    • relatedTarget
包括的事件 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 )
})
  • onClick
<button onClick={(e)=>{...}}></button>
  • onDoubleClick
<button onDoubleClick={(e)=>{...}}></button>
  • 键盘事件

    -- 事件对象 e extends UIEvent , 以及以下属性

继承的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
}
  • 焦点事件 (FocusEvent)

    -- 事件对象 e extends UIEvent , 以及以下属性

继承的UIEvent 事件e属性 描述 建议或更多
UIEvent.detail [number] 事件发生时 当前鼠标点击的次数,单击、双击或更多 只读 有效对象:click dbclick mousedown mouseup , 其他对象的值均为 0
UIEvent.view 事件发生时 生成事件的用户视图对象 默认返回 原生document.defaultView(window of document) 只读
 -- 其他属性
事件e属性 描述 建议或更多
relatedTarget [instance of EventTarget] 事件发生时的次要目标 只读

-- 滚轮事件 (WheelEvent)

-- 事件对象 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] 只读
  • 指针事件(PointerEvent)

    -- 事件对象 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] 只读
  • 触摸事件(TouchEvent)

    -- 事件对象 e extends UIEvent , 以及以下属性

继承的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 [Array] @returns Touch对象的list 根据事件类型不同返回不同 [touchStart=>新增的触模点] [touchMove=>变化了的触模点] [touchEnd=>已移除的触模点] 只读 const touches = touchEvent.changedTouches
touches [Array] @returns 当前所有与触控设备接触的触摸点对象 只读 const touches = touchEvent.touches
targetTouches [Array] @returns 当前所有与触控设备接触的触摸点对象的touchStart阶段的元素 只读 const touches = touchEvent.targetTouches
<!-- getModifierState(key) 返回指定的修改键的激活状态 只读,浏览器兼容性差 -->
  • 过渡事件(TransitionEvent)

    -- 事件对象 e extends UIEvent , 以及以下属性

继承的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
  • 动画事件(AnimationsEvent)

    -- 其他属性

事件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
  • onAnimationStart

              //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)
                }
                ...
                
    ... }
    • 剪贴板相关事件(ClipboardEvent)

    Clipboard Api

    -- 其他属性

事件e属性 描述 建议或更多
clipboardData [DataTransfer(用于保存drag和drop数据的对象)] @return 只读 需注意浏览器兼容性

-- clipboardData:DataTransfer

DataTransfer功能 描述 建议或更多
描述可用于剪切和粘贴的数据类 通过调用 DataTransfer.setData(format, data)实现
获取可用于paste事件的数据 通过调用 DataTransfer.getData(format)实现
  • 输入事件(InputEvent)

    • 其他属性
事件e属性 描述 建议或更多
data [DOMString] 只读 需注意浏览器兼容性
  • 输入法编辑器事件(CompositionEvent)

    • 其他属性
事件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事件 (表单、对话框、详细信息展示、图片等、媒体元素)

    • DOM表单事件

      • onReset

      extends Event

      ...
      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>
      
    • DOM对话框事件

      -- 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元素

      • onToggle
      <details onToggle={(ev)=>{console.log('onToggle-details', ev)}}>
          <summary>历史概论</summary>
          历史概论:详细解析宋朝历史,宋徽宗的笔下历史,详细解析宋朝历史,宋徽宗的笔下历史详细解析宋朝历史,宋徽宗的笔下历史详细解析宋朝历史,宋徽宗的笔下历史
      </details>
    • DOM的部分元素事件 (img、svg image 、ifame 、object 、embed、link)

      • onLoad
      ...
      <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)

      • onError
      ...
      <img src="https://path/to/open.jpg" alt="t-img" onError={(ev)=>{
          console.log('t-img-onError', ev, ev.timeStamp)
      }} />
      
    • DOM媒体元素事件 (audio 、video)

          <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)}} />
      • onCanPlay
                ...
                <video src="http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4" onCanPlay={(ev)=>{
                  console.log('t-media-onCanPlay', ev, ev.timeStamp)
                }} />
      
      • HTMLMediaElement.duration

      . 以秒(s)为单位的媒体长度
      . 没有媒体数据 HTMLMediaElement.duration = 0
      . 有媒体数据,但长度未知 HTMLMediaElement.duration = NaN
      . 媒体流式传输并没有预定义长度 HTMLMediaElement.duration = Inf

             ...
                <video ref={videoRef}>...</video>
      
                ...
                console.log('videoRef-duration', videoRef.current.duration)
  • 其他事件

  • 触摸事件

  • AnimationEvent

  • 指定元素的事件 (

    ..
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇