You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
默认行为:事件本身就带有的,即使没有绑定方法,也会存在一些默认效果,这些默认效果就是默认行为。比如 <a></a> 标签的点击行为:页面跳转,HASH 定位(锚点定位)。(扫个盲:锚点定位是在根目录下给a标签的链接加上一个标识 <a href='#xx'></a> 和页面的某个节点的 ID xx 匹配。)
一、事件
1. 事件绑定
element.onXXX = function(){}
,例如box.onclick = function(){}, box.onclick = null
。DOM0 事件绑定利用的是给已经存在的私有属性赋值,事件绑定后浏览器会建立监听机制。element.addEventListener('xxx', function(){}, false)
,element.removeEventListener('xxx', fn)
,element.attachEvent('xxx', function(){})
,DOM2 中的监听事件可以给同一个元素对象绑定多个事件形成事件池,事件的执行顺序是按队列的结构依次执行。addEventListener('xxx', function(){}, false)
中xxx
是DOM中的事件也可以自定义,function(){}
中的this
指向element
。addEventListener()
, 第三个参数默认值是 false。true:表示事件在捕获阶段执行
。false 表示事件在冒泡阶段执行
一个小例子
onclick
onkeydown
2. 事件默认行为
3. 阻止默认行为
preventDefault
,以<a></a>
示例4. 事件传播机制
冒泡传播机制
指:触发子元素的事件,父元素的事件也被相继触发,一般认为body
是最外层的元素,这个传播过程就是事件冒泡。捕获机制
:当内部事件触发时,浏览器首先会在外层元素向内查找,找到事件触发的源头,这个过程就是捕获事件。而捕获的目的是为了规划冒泡的传播路径。小思考
二、事件委托(事件代理)
事件委托的场景题1
(面试题)event.stopPropagation() 和 event.preventDefault() 区别
stopPropagation()
是用于阻止事件的进一步传播,但是不能阻止事件的默认行为,像 a 标签点击的默认跳转行为使用场景二
(面试题)event.target 和 event.currentTarget 的区别
参考
2019 再聊移动端 300ms 延迟及 fastClick 原理解析
The text was updated successfully, but these errors were encountered: