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]事件发生的时间戳
nativeEventReact事件额外添加对象浏览器原生事件对象
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事件
onTransitionEndCSS过渡事件原生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> 的事件
onResetDOM表单事件 当表单被重置时触发原生reset事件
onResetCapture捕获阶段触发onReset事件
onSubmitDOM表单事件 当表单提交时触发原生submit事件
onSubmitCapture捕获阶段触发onSubmit事件
仅适用于 <dialog> 的事件事件会冒泡
onCancel ?DOM对话框事件 当对话框被取消时触发原生cancel事件
onCancelCapture捕获阶段触发onCancel事件
onCloseDOM对话框事件 当对话框已被关闭时触发原生close事件
onCloseCapture捕获阶段触发onClose事件
仅适用于 <details> 的事件事件会冒泡
onToggleDOM详细信息元素事件 当详细信息展示元素<details>被打开/关闭切换时触发原生toggle事件
onToggleCapture捕获阶段触发onToggle事件
仅适用于 <img>、<iframe>、<object>、<embed>、<link> 和 SVG <image> 的事件React中事件,事件会冒泡
onLoadDOM的部分元素事件 当元素加载完成时触发
onLoadCapture捕获阶段触发onLoad事件
仅适用于 <img>、<iframe>、<object>、<embed>、<link> 和 SVG <image> <audio> 、<video> 的事件事件会冒泡
onErrorDOM元素加载失败事件 当资源无法加载时触发原生error事件
onErrorCapture捕获阶段触发onError事件
仅适用于<audio> 、<video> 的事件事件会冒泡
onAbortDOM媒体元素事件 当资源未被完全加载时触发, 发生加载错误时不触发原生abort事件
onAbortCapture捕获阶段触发onAbort事件
onCanPlayDOM媒体元素事件 当媒体终端可以播放资源(但仍需继续加载并会停止播放)时触发原生canplay事件
onCanPlayCapture捕获阶段触发onCanPlay事件
onCanPlayThroughDOM媒体元素事件 当媒体终端可以播放资源到结束(无需继续加载至结束)时触发原生canplay事件
onCanPlayThroughCapture捕获阶段触发onCanPlayThrough事件
onPlayDOM媒体元素事件 当媒体开始播放时触发,触发 play事件时原生play事件
onPlayCapture捕获阶段触发onPlay事件
onPlayingDOM媒体元素事件 当媒体资源准备播放或重新播放时触发原生playing事件
onPlayingCapture捕获阶段触发onPlaying事件
onPauseDOM媒体元素事件 当媒体资源暂停播放时触发,一般通过调用 pause()方法触发原生pause事件
onPauseCapture捕获阶段触发onPause事件
onProgressDOM媒体元素事件 当浏览器加载媒体资源时周期性触发原生progress事件
onProgressCapture捕获阶段触发onProgress事件
onEndedDOM媒体元素事件 当媒体资源回放或媒体文件播放结束时触发原生ended事件
onEndedCapture捕获阶段触发onEnded事件
onRateChangeDOM媒体元素事件 当媒体资源播放速率改变时触发原生ratechange事件
onRateChangeCapture捕获阶段触发onRateChange事件
onResizev18.x DOM媒体元素事件 当媒体资源播放速率改变时触发无原生事件
onResizeCapture捕获阶段触发onResize事件
onSeekingDOM媒体元素事件 当搜索操作完成开始时触发(例如:视频进度条的开始点击跳转)原生seeking事件
onSeekingCapture捕获阶段触发onSeeking事件
onSeekedDOM媒体元素事件 当搜索操作完成时触发(例如:视频进度条的点击跳转完成)原生seeked事件
onSeekedCapture捕获阶段触发onSeeked事件
onTimeUpdateDOM媒体元素事件 当媒体资源的当前播放时间更新时触发原生timeupdate事件
onTimeUpdateCapture捕获阶段触发onTimeUpdate事件
onVolumeChangeDOM媒体元素事件 当媒体资源的播放音量(volumemuted)改变时触发原生volumechange事件
onVolumeChangeCapture捕获阶段触发onVolumeChange事件
onWaitingDOM媒体元素事件 当媒体资源由于缺少数据被暂停播放时触发原生waiting事件
onWaitingCapture捕获阶段触发onWaiting事件
onSuspendDOM媒体元素事件 当媒体资源加载被暂停时触发原生suspend事件
onSuspendCapture捕获阶段触发onSuspend事件
onStalledDOM媒体元素事件 当浏览器开始请求媒体资源但是未获取到时触发原生seeked事件
onStalledCapture捕获阶段触发onStalled事件
onLoadStartDOM媒体元素事件 当浏览器开始加载资源时触发原生loadstart事件
onLoadStartCapture捕获阶段触发onLoadStart事件
onLoadedDataDOM媒体元素事件 当前播放位置的视频帧加载完成时触发原生loadeddata事件
onLoadedDataCapture捕获阶段触发onLoadedData事件
onLoadedMetadataDOM媒体元素事件 当元数据加载完成时触发原生onloadedmetadata事件
onLoadedMetadataCapture捕获阶段触发onLoadedMetadata事件
onDurationChangeDOM媒体元素事件HTMLMediaElement.duration 属性更新时触发原生durationchange事件
onDurationChangeCapture捕获阶段触发onDurationChange事件
onEmptiedDOM媒体元素事件 当媒体资源变为空时触发(如需重新加载前清空资源)原生emptied事件
onEmptiedChangeCapture捕获阶段触发onEmptied事件
onEncryptedDOM媒体元素事件 当浏览器加载的资源被加密时触发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
包括的事件targetrelatedTarget
focusin (en-US)EventTarget 获取焦点EventTarget 失去焦点
focusoutEventTarget 失去焦点EventTarget 获取焦点
mouseenter指针设备进入的EventTarget指针设备离开的EventTarget
mouseleave指针设备离开的 EventTarget指针设备进入的 EventTarget
mouseout指针设备离开的 EventTargetEventTarget
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只读
localeReact 内部属性只读
location键盘按下时,物理键在键盘上的位置信息 @return [unsigned long:01234(移动设备的参数值)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属性描述建议或更多
deltaModedelta 滚动值的单位, @returns [unsigned long : 0x00(像素级别)0x01(行级别)0x02(页级别)]只读
deltaXdeltaMode为单位的X轴的滚动量, @returns [double]只读
deltaYdeltaMode为单位的Y轴的滚动量, @returns [double]只读
deltaZdeltaMode为单位的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属性描述建议或更多
deltaModedelta 滚动值的单位, @returns [unsigned long : 0x00(像素级别)0x01(行级别)0x02(页级别)]只读
deltaXdeltaMode为单位的X轴的滚动量, @returns [double]只读
deltaYdeltaMode为单位的Y轴的滚动量, @returns [double]只读
deltaZdeltaMode为单位的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
小恐龙
花!
上一篇
下一篇