5 个回答

事件是在当前宏事件主任务执行完后才执行的,可以用setTimeout(function(){...捕获阶段的事件需执行的内容...},0)把捕获阶段获取的事件推到下一个宏事件中执行。。。
冒泡阶段的事件在第一个宏事件中执行,捕获阶段事件在第二个宏事件中执行,这样大概就能达到先冒泡后捕获的效果。。

标准的事件监听有第三个参数,一个 Object,里边传递boolean类型的参数 capture ,用来设置监听冒泡阶段还是捕获阶段。
监听两次即可。

上边说宏任务的怕不是没看过异步实现bug文章...不管标准如何每个浏览器对异步的理解都稍稍有点不一致,更别说有的浏览器希望倒逼标准跟进自己,有些时候标准确实有bug也是事实

扯远了,题目的答案应该是new一个事件然后在监听的元素上dispatch出去.事件本身设置冒泡与否不影响结果,影响因素是监听顺序
图片描述

当然,如果能保证事件的src就是你正在监听的元素,那么原生事件也是ok的

事件机制只能是先捕获后冒泡吧。这个题的意思是不是先执行冒泡事件绑定的回调函数,再执行捕获事件绑定的回调函数,这在理论上才可行吧。

对某一元素添加监控,触发事件时,先添加的哪个事件就先触发哪个。见如下实例:https://jsbin.com/lomonigege/...
注意这里要点击黄色区域部分即最外层。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题