Vuejs2 在Vue组件中使用DomeElement.addEventListener正在捕获前面的事件
我有一个Vuejs2 在Vue组件中使用DomeElement.addEventListener正在捕获前面的事件,vuejs2,addeventlistener,Vuejs2,Addeventlistener,我有一个Vue组件,它在其创建的生命周期方法中向文档添加一个事件侦听器,以捕获root$el之外的任何单击。让我们称之为弹出窗口 当我单击调用并装载上述弹出窗口的元素时,会立即捕获文档单击事件 下面是一个JSFIDLE,其中包含简化的代码: 与此相反,这里是一个纯js版本,它可以正确绑定click事件: 作为交叉参考,以下是vue论坛帖子: 任何见解都值得赞赏 归功于Vue核心团队成员LinusBorg 需要设置超时时间 下面是一个实现了setTimeout的工作示例: 英文解释: 单击事件发
Vue
组件,它在其创建的生命周期方法中向文档添加一个事件侦听器,以捕获root$el
之外的任何单击。让我们称之为弹出窗口
当我单击调用并装载上述弹出窗口的元素时,会立即捕获文档单击事件
下面是一个JSFIDLE,其中包含简化的代码:
与此相反,这里是一个纯js版本,它可以正确绑定click事件:
作为交叉参考,以下是vue论坛帖子:
任何见解都值得赞赏 归功于Vue
核心团队成员LinusBorg
需要设置超时时间
下面是一个实现了setTimeout
的工作示例:
英文解释:
单击事件发生并进入捕获阶段<代码>父级
Vue组件处理此事件
parent
组件设置内部$data
标志以显示弹出窗口
模块
弹出窗口
模块被实例化并装入。在创建的函数中,附加document.addEventListener
事件李>
单击事件捕获阶段完成并开始冒泡DOM李>
单击事件现在由文档捕获
,因为我们刚刚添加了事件侦听器。它启动回调,看起来什么也没发生
解决方案:
单击事件发生并进入捕获阶段<代码>父级
Vue组件处理此事件
parent
组件设置内部$data
标志以显示弹出窗口
模块
弹出窗口
模块被实例化并装入。在创建的函数中,在setTimeout
函数中附加文档。addEventListener
,以便在单击事件完全完成后附加该文档李>
单击事件捕获阶段完成并开始冒泡DOM李>
事件的气泡
阶段完成
setTimeout
中的回调现在运行,文档现在侦听单击
将捕获随后出现在文档
中的任何单击
您能否更明确地解释一下如何使用setTimeout
解决您的问题?@thanksd。答复滞后2年。。。它在小提琴上: