javascript 基础 --- 事件流原理
2019-05-22 05:31 *奋斗* 阅读(110) 评论(0) 收藏 举报低版本的 IE 浏览器只能支持冒泡流(IE 6 7 8 只支持冒泡流),所以为了兼容更多的浏览器,建议大家使用冒泡流。

低版本的 IE 浏览器只能支持冒泡流(IE 6 7 8 只支持冒泡流),所以为了兼容更多的浏览器,建议大家使用冒泡流。
一个完整的 js 事件流是从 window 开始,最后回到 window 的一个过程。事件流被分为三个阶段:
捕获阶段、目标阶段、冒泡阶段。
dom 0 --- 只能一个元素绑定一个事件,不会阻止事件冒泡的发生;
dom 2 / dom 3--- 支持事件的冒泡和捕获,可以同时注册多个事件,由于部分浏览器不支持捕获,故建议使用冒泡;
dom 2以后常用 addEventListener(type, function, true / false); // 第三个参数默认为false,即:冒泡;
target:当前被触发的元素(例如:ul li,事件绑定在 ul 上,点击li。则 target 为li,而 currentTarget 为 ul)
currentTarget:当前正在处理事件的元素;
eventPhase:表明事件处理的阶段:1 捕获阶段、2 目标阶段、3 冒泡阶段;
preventDefault()主要是用来阻止标签的默认行为;使用preventDefault()这个方法就阻止了<a target="http://www.baidu.com">标签的打开新窗口 。stopPropagation()这个方法主要是用来阻止事件冒泡的。
对应在IE8以下的浏览器用:event.returnValue = false 和 event.cancelBubble = true;
html5 中新增的事件:
contextmenu、beforeunload、hashchange。
捕获和冒泡的方式决定着浏览器何时去处理这个事件,如果我把事件声明在冒泡阶段处理,那么在捕获阶段即使捕获到了这个事件,事件也是不会被执行。
浙公网安备 33010602011771号