297

问答题 297 /501

有了解过事件模型吗,DOM0级和DOM2级有什么区别,DOM的分级是什么

参考答案

参考回答:

JSDOM事件流存在如下三个阶段:

事件捕获阶段

处于目标阶段

事件冒泡阶段

JSDOM标准事件流的触发的先后顺序为:先捕获再冒泡,点击DOM节点时,事件传播顺序:事件捕获阶段,从上往下传播,然后到达事件目标节点,最后是冒泡阶段,从下往上传播

DOM节点添加事件监听方法addEventListener,中参数capture可以指定该监听是添加在事件捕获阶段还是事件冒泡阶段,为false是事件冒泡,为true是事件捕获,并非所有的事件都支持冒泡,比如focus,blur等等,我们可以通过event.bubbles来判断

事件模型有三个常用方法:

event.stopPropagation:阻止捕获和冒泡阶段中,当前事件的进一步传播,

event.stopImmediatePropagetion,阻止调用相同事件的其他侦听器,

event.preventDefault,取消该事件(假如事件是可取消的)而不停止事件的进一步传播,

event.target:指向触发事件的元素,在事件冒泡过程中这个值不变

event.currentTarget = this,时间帮顶的当前元素,只有被点击时目标元素的target才会等于currentTarget,

最后,对于执行顺序的问题,如果DOM节点同时绑定了两个事件监听函数,一个用于捕获,一个用于冒泡,那么两个事件的执行顺序真的是先捕获在冒泡吗,答案是否定的,绑定在被点击元素的事件是按照代码添加顺序执行的,其他函数是先捕获再冒泡