news 2026/7/1 21:26:31

el-drawer注册全局点击事件无效;el-dialog注册全局点击事件无效

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
el-drawer注册全局点击事件无效;el-dialog注册全局点击事件无效

提示:el-drawer或el-dialog注册全局点击事件无效,即抽屉或弹框外点击会触发事件,但抽屉和弹框内点击无反应

目前通过方案2:使用捕获阶段(推荐)解决


文章目录

    • 解决方案
      • 方案1:将事件监听器改为 `document`
      • 方案2:使用捕获阶段(推荐)
      • 方案3:检查事件路径
      • 方案4:针对 el-drawer 的特殊处理
      • 方案5:使用 Vue 的自定义事件(如果 drawer 是子组件)
    • 调试建议

这是因为事件冒泡被阻止了。el-drawer组件内部的事件默认不会冒泡到window,这可能是因为:

  1. el-drawer阻止了事件冒泡(事件修饰符.stop
  2. 事件目标被判断为不在window
  3. el-drawer的层叠上下文导致事件被拦截

解决方案

方案1:将事件监听器改为document

onMounted(()=>{document.addEventListener("click",clearFlag)})onBeforeUnmount(()=>{document.removeEventListener("click",clearFlag)})

方案2:使用捕获阶段(推荐)

onMounted(()=>{document.addEventListener("click",clearFlag,true)// 第三个参数 true 表示捕获阶段})onBeforeUnmount(()=>{document.removeEventListener("click",clearFlag,true)})

方案3:检查事件路径

如果上面的方法无效,可以检查事件是否被阻止:

constclearFlag=(event)=>{console.log('事件触发',event.target)console.log('事件路径',event.composedPath())// 检查是否被阻止console.log('defaultPrevented',event.defaultPrevented)}

方案4:针对 el-drawer 的特殊处理

import{nextTick}from'vue'onMounted(()=>{nextTick(()=>{// 获取 drawer 的 DOMconstdrawer=document.querySelector('.el-drawer')if(drawer){drawer.addEventListener('click',clearFlag)}// 同时监听 document 作为后备document.addEventListener('click',clearFlag)})})onBeforeUnmount(()=>{constdrawer=document.querySelector('.el-drawer')if(drawer){drawer.removeEventListener('click',clearFlag)}document.removeEventListener('click',clearFlag)})

方案5:使用 Vue 的自定义事件(如果 drawer 是子组件)

<!-- 父组件 --> <template> <ChildDrawer @drawer-click="clearFlag" /> </template> <!-- 子组件 drawer 内部 --> <template> <el-drawer> <div @click="$emit('drawer-click')"> <!-- 内容 --> </div> </el-drawer> </template>

调试建议

constclearFlag=(event)=>{console.log('事件触发',{target:event.target,currentTarget:event.currentTarget,eventPhase:event.eventPhase,// 1: 捕获, 2: 目标, 3: 冒泡bubbles:event.bubbles,// 是否冒泡defaultPrevented:event.defaultPrevented,composed:event.composed,// 是否能跨越 Shadow DOM})}

推荐先用方案1或方案2,大多数情况下将window改为document并使用捕获阶段就能解决问题。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/1 16:30:45

HY-MT1.5-1.8B多GPU部署教程:提升翻译吞吐量3倍

HY-MT1.5-1.8B多GPU部署教程&#xff1a;提升翻译吞吐量3倍 1. 引言 1.1 企业级机器翻译的性能挑战 在现代全球化业务场景中&#xff0c;高质量、低延迟的机器翻译系统已成为跨国企业内容本地化、客户服务和实时通信的核心基础设施。Tencent-Hunyuan/HY-MT1.5-1.8B 是腾讯混…

作者头像 李华
网站建设 2026/7/1 9:11:37

Live Avatar A/B测试框架:不同参数组合效果对比实验

Live Avatar A/B测试框架&#xff1a;不同参数组合效果对比实验 1. 引言 1.1 技术背景与选型需求 随着数字人技术的快速发展&#xff0c;阿里联合高校开源的Live Avatar模型为实时语音驱动数字人视频生成提供了新的可能性。该模型基于14B参数规模的DiT架构&#xff0c;支持从…

作者头像 李华
网站建设 2026/7/1 12:00:49

【大数据】Apache Calcite架构:从 SQL 到执行计划的转换框架

文章目录一、Calcite 架构&#xff1a;只做 SQL 访问框架&#xff0c;不做存储和计算二、Calcite 处理流程&#xff1a;SQL 字符串到执行结果的五阶段转换三、SQL 解析&#xff1a;从字符串到抽象语法树&#xff08;SQL → SqlNode&#xff09;四、SQL 验证&#xff1a;确保语法…

作者头像 李华
网站建设 2026/7/1 9:11:40

事实核查领域的AI原生应用:现状、问题与突破

事实核查领域的AI原生应用&#xff1a;现状、问题与突破关键词&#xff1a;事实核查、AI原生应用、大语言模型、多模态验证、可信AI摘要&#xff1a;在信息爆炸的今天&#xff0c;虚假信息如“数字病毒”般快速传播&#xff0c;传统人工事实核查面临效率与覆盖的双重瓶颈。本文…

作者头像 李华
网站建设 2026/7/1 6:08:41

RAG系统架构

以上是从原始数据到最终返回 Top-K 结果的完整流程的信息检索或 RAG&#xff08;Retrieval-Augmented Generation&#xff09;系统架构图。整个流程分为四个主要阶段&#xff1a;Extraction&#xff08;提取&#xff09;、Preprocessing&#xff08;预处理&#xff09;、Indexi…

作者头像 李华