浏览器事件
事件
事件传播三阶段
- 捕获阶段 事件自window走入元素 出警
- 目标阶段 事件到达元素 到查
- 冒泡阶段 事件从元素向上传播 上报
常用事件
- 鼠标事件
- click 点击
- contextmenu 右击
- mouseover / mouseout 移入/出
- mousedown / mouseup 按下/释放
- mousemove 移动
- 键盘事件
- keydown / keyup 按下松开
- 表单事件
- submit 提交
- focus 聚焦
- Document 事件
- DOMContentLoaded dom构建完成
- CSS 事件
- transitionend 动画完成
事件处理
- HTML 特性
on<event>="func()" - DOM 属性
elem.onclick = function(event){}elem.addEventListener(event, handle, ?options)- option
once capture passive一次 捕获 阻止默认行为 - 可以添加多个处理程序
- 有些事件只能以此设置处理程序
- 若handle为对象 会调用
obj.handleEvent(event)
- option
elem.removeEventListener(同上)移除
- 事件对象
- this 指向事件元素
- 函数接收一个事件对象
event.type事件类型.currentTarget事件元素 (当前).target目标元素 (最初触发).eventPhase当前阶段.stopPropagation()停止冒泡.preventDefault()阻止
- 阻止浏览器默认行为
event.preventDefault()on<event>="return false".onclick=event=>falseevent.defaultPrevented在阻止时为true
- 创建事件
let event = new Event(type,?options)也可以用具体的UI事件类
bubbles: true/false是否冒泡cancelable: true/false是否阻止默认
elem.dispatchEvent(event)
- 自定义事件
new CustomEvent('eventName'{detail:any})