定义全局键盘监听事件,el-dialog中删除不可用

场景:全局的div增加了鼠标监听事件,而且window中添加了键盘监听事件。

window.addEventListener('keydown', this.handleKeydown)

window.addEventListener('keyup', this.handleKeyup)

事件冒泡,导致阻止无效。

1、在 el-dialog 上同时阻止默认行为和冒泡

javascript 复制代码
<el-dialog
  @keydown.stop.prevent
  // ... other props ...
>
  // ... dialog content ...
</el-dialog>

在el-dialog上添加 @keydown.stop.prevent。可能会导致全部键盘不可用。

2、在 dialog 内部的输入元素上直接处理

javascript 复制代码
<el-dialog>
  <el-input
    @keydown.stop.prevent.native
    // ... other props ...
  />
  // ... other content ...
</el-dialog>

3、在全局键盘事件处理器中添加判断,忽略来自 dialog 的事件

javascript 复制代码
// 全局键盘事件处理器
handleKeyDown(event) {
  // 检查事件源是否在 dialog 内
  const isInDialog = event.target.closest('.el-dialog');
  if (isInDialog) {
    return; // 如果在 dialog 内,直接返回不处理
  }
  
  // 原有的键盘事件处理逻辑
  // ... existing code ...
}

亲测有效!!!

4、使用 v-if 条件来控制全局键盘事件的监听

javascript 复制代码
// 在组件中添加一个控制变量
data() {
  return {
    isDialogVisible: false,
    // ... other data
  }
}

// 在模板中
<div 
  @keydown="isDialogVisible ? null : handleKeyDown"
  // ... other attributes
>
  <el-dialog
    v-model="isDialogVisible"
    // ... other props
  >
    // ... dialog content ...
  </el-dialog>
</div>
相关推荐
夏殇之殁1 天前
包中创建自定义列表项。 . 使用自定义列表项进行数据绑定 . 将天气预报数据保存到本地内存表,通过LiveBindings进行显示。 ...
服务器·前端·javascript
新中地GIS开发老师1 天前
WebGIS开发学生作品|低空航天管理与航线规划系统
前端·javascript·webgis·三维gis开发
丙氨酸長鏈1 天前
Web前端入门第 问:JavaScript 一个简单的 IndexedDB 数据库入门示例
前端·javascript·数据库
kyriewen1 天前
面试官让我手写虚拟列表——AI生成的版本,快速滚动几下就白屏了
前端·javascript·面试
林焱_RPAAI1 天前
影刀RPA技术深度:CSS选择器高级实战指南——伪类属性选择器与性能对比完全解析
vue.js·react.js
许彰午1 天前
政务督办的分合模式:主办协办的并发审批
前端·javascript·政务
陳陈陳1 天前
🚀 前端流式输出革命:SSE + BFF 架构从零到一实战指南
vue.js·架构·node.js
易筋紫容1 天前
创建型模式:对象的诞生艺术
开发语言·前端·javascript
0_Error_1 天前
猫国建设者 修改资源 自动采集
javascript
贩卖黄昏的熊1 天前
NestJS简明教程——安全
开发语言·javascript·安全·typescript·nest.js