element-ui MessageBox.confirm 取消自动聚焦

news/2024/11/7 10:58:59/文章来源:https://www.cnblogs.com/azoux/p/18531730

在使用 element-ui 的 MessageBox.confirm 方法时,你可能注意到一个细节:当确认框弹出时,确认按钮会自动获得焦点。虽然这种设计在大多数情况下是合理的,但有时我们可能不希望出现这种自动聚焦的行为。

解决方案

我们可以通过简单的包装来解决这个问题。以下是实现代码:

TypeScript

import { MessageBox } from 'element-ui';
import { ElMessageBoxOptions } from 'element-ui/types/message-box'export const MessageBoxConfirmWrapper = (...args: [string, string, ElMessageBoxOptions?]) => {setTimeout(() => {(document.activeElement as HTMLElement)?.blur();}, 0);return MessageBox.confirm(...args);
}

JavaScript

import { MessageBox } from 'element-ui';export const MessageBoxConfirmWrapper = (...args) => {setTimeout(() => {document.activeElement?.blur();}, 0);return MessageBox.confirm(...args);
}

使用方法

main.tsmain.js注册完element-ui后,手动进行覆盖

Vue.use(ElementUI, { size: "medium" });// 覆盖element-ui的MessageBox.confirm方法
Vue.prototype.$confirm = MessageBoxConfirmWrapper;

原理解释

这个解决方案利用了 JavaScript 的事件循环机制。通过 setTimeout 将移除焦点的操作放到下一个事件循环中执行,可以确保在 MessageBox 完成渲染并设置焦点之后再移除焦点。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/828212.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

centos修改yum源

centos修改yum源 在CentOS中修改YUM源,你需要替换/etc/yum.repos.d/目录下的.repo文件。以下是一个基本的步骤和示例:备份当前的YUM源文件。创建或编辑一个新的.repo文件。添加你的YUM源信息。例如,如果你想要将YUM源更改为阿里云的源,可以按照以下步骤操作:# 1. 备份当前…

C# NET framework 4.5调用系统Toast通知

C# Toast 资源调用dll 资源调用exe最近有一个工控程序,基于net4.5.2开发的,尝试增加win10系统的Toast通知消息,网络收集到如下结论: 1. Toast功能需要net4.8的高版本,调用Microsoft.Toolkit.Uwp.Notifications.dll —— 工控程序不可能升级的 2. 低版本net都是使用winform…

C++ ftp上传文件

目录结构: ftpdemo/include/elapse.h1 /*************************************************2 Copyright (C), 2019-2029, Guide Tech. Co., Ltd.3 File name: elapse.h4 Author: henry5 Version: V1.0.0.0 6 Date: 202410087 Description:计算函数运行时间8 **************…

Schema Free

向量检索服务DashVector在设计上支持Schema Free。向量检索服务DashVector在设计上支持Schema Free,在插入Doc、更新Doc、插入或更新Doc时,可设置任意KeyValue结构的字段(Field),如下所示: Python示例: collection.insert(Doc(id=1,vector=np.random.rand(4),fields={name…

0基础读顶会论文—流程即服务(PraaS):通过无服务器流程统一弹性云和有状态云

细粒度的无服务器函数为许多新应用提供了动力,这些应用受益于弹性扩展和按需付费计费模型,同时将基础设施管理开销降至最低。为了实现这些特性,函数即服务(FaaS)平台将计算和状态分离,PraaS 通过提供数据本地性、快速调用和高效通信改进了当前的 FaaSAbstract 细粒度的无…

安装和配置CentOS9

安装和配置CentOS9 一、下载CentOS9镜像文件 1.访问官网:首先,你需要访问CentOS的官网或阿里云镜像网站 2.选择版本:在官网上,选择CentOS9的64位操作系统版本进行下载。3.等待下载:点击下载链接后,等待镜像文件下载完成。 二、安装CentOS9 1. 创建虚拟机(以VMware WorkS…

wed服务器一览

cs架构 c客户端 s服务端 bs架构 浏览器nb(客户端) 网站是做服务端客户端浏览器 到 服务器 请求 服务器 到 客户端浏览器 相应

WebSocket简介

一、websocket简介 websocket是一种在单个TCP连接上进行全双工通信的协议。 websocket使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在WebSocket API中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向…

袋鼠云港口数智化解决方案发布,数智引领,加速“智变”丨2024袋鼠云秋季发布会回顾

2023年12月,交通运输部印发《关于加快智慧港口和智慧航道建设的意见》,《意见》贯穿了“3条主线”,其中最首要的主线是“数字化”,数字化是基础,必须通过数字赋能建设、生产、运营、管理、服务的全要素、全过程、全场景,将数据作为新的生产要素,方可夯实智慧港口和智慧航…

Netty 如何自动探测内存泄露的发生

本文基于 Netty 4.1.112.Final 版本进行讨论本文是 Netty 内存管理系列的最后一篇文章,在第一篇文章 《聊一聊 Netty 数据搬运工 ByteBuf 体系的设计与实现》 中,笔者以 UnpooledByteBuf 为例,从整个内存管理的外围对 ByteBuf 的整个设计体系进行了详细的拆解剖析,随后在第…

ABB机器人IRB6640驱动器维修诊断分析

ABB工业机械手IRB6640是工业自动化领域的重要设备,其伺服驱动单元作为机器人的核心部件,负责提供动力和控制机器人的运动。然而,由于长时间运行、负载变化等因素,驱动单元可能会出现故障。一、ABB工业机械手IRB6640驱动器维修与诊断分析方法1.故障代码诊断: - ABB机器人伺…