您当前的位置:首页 > 网站建设笔记 >

事件对象的eventPhase属性

0

事件对象的eventPhase属性,可以用来确定事件当前正位于事件流的哪个阶段。如果是在捕获阶段调用的事件处理程序,那么eventPhase等于1,如果事件处理程序处于目标对象上,则eventPhase等于2,如果是在冒泡阶段调用的事件处理程序,eventPhase等于3。这里要注意的是,尽管“处于目标”发生在冒泡阶段,但eventPhase仍然一直等于2。来看下面的例子:

var btn=document.getElementById("myBtn");
btn.onclick=function(event){
  LS.log.write(event.eventPhase+" "+event.currentTarget.tagName);
};
document.body.addEventListener("click",function(event){
  LS.log.write(event.eventPhase+" "+event.currentTarget.tagName);
},true);
document.body.onclick=function(event){
  LS.log.write(event.eventPhase+" "+event.currentTarget.tagName);
};

当单击这个例子中的按钮时,首先执行的事件处理程序是在捕获阶段触发的添加到document.body中的那一个,结果会弹出一个警告框显示表示eventPhase的1。接着,会触发在按钮上注册的事件处理程序,此时的eventPhase值为2。最后一个被触发的事件处理程序,是在冒泡阶段执行的添加到document.body上的那一个,显示eventPhase的值为3。而当eventPhase等于2时,this、target和currentTarget始终都是相等的。只有在事件处理程序执行期间,event对象才会存在,一旦事件处理程序执行完毕,event对象就会被销毁。

建站咨询

在线咨询真诚为您提供专业解答服务

咨询热线

137 1731 25507×24小时服务热线

微信交流

二维码终于等到你,还好我没放弃
返回顶部