记录一下vue-quill-editor(富文本框)禁用粘贴图片

项目中很多地方都使用富文本编辑器,富文本可以上传图片,但是,在粘贴图片时,并不能触发上传接口,而且把图片转成base64,提交保存时,就把base64保存到数据库了,这肯定会引起查询问题,查询慢或者接口超时前端小伙伴,想让后端处理一下,后端能做但是比较麻烦,而且富文本使用的地方很多,相当于每一个保存接口,都要处理一下,这工作量就很大了,难道前端不好处理吗?我开始百度,查询大量资料,发现解决办法还是很多的,找了一篇发给了前端小伙伴,得到的回复是,在阻止默认事件时,不生效,并没有阻止粘贴图片

案例代码

<template><div><quill-editorref="editor"v-model="content":options="{modules: {toolbar: [['bold', 'italic', 'underline', 'strike'], ['link', 'image', 'video']]},placeholder: '请输入内容...',}"></quill-editor></div>
</template><script>
import { QuillEditor } from 'vue-quill-editor'; export default {name: 'MyComponent',components: { QuillEditor },data() {return {content: '',quill: null};},mounted() {this.quill = this.$refs.editor.quill;this.quill.root.addEventListener('paste', this.handlePaste, false);},beforeDestroy() {this.quill.root.removeEventListener('paste', this.handlePaste, false);},methods: {handlePaste(e) {const clipboardData = e.clipboardData;const types = clipboardData.types;if (types.includes('Files')) {// 禁止粘贴图片e.preventDefault();}},},
};
</script>

虽然,我没写过vue,但是大致能懂,设置了一个监听事件,如果粘贴的对象时文件,则阻止,前端小伙伴也是这个写的,监听事件也执行了,逻辑走到了if里,但是e.preventDefault()没有生效
我有查了大量e.preventDefault();没有生效的方案,试了,没啥作用,分析了一下原因,大致这几种
原因分析
e.preventDefault() 方法可能没有生效的原因有几个方面:

  1. 事件冒泡与捕获:默认情况下,addEventListener使用的是事件冒泡阶段来处理事件。如果其他地方有相同的事件监听器并且它先执行了 e.preventDefault(),那么这里的
    preventDefault 可能不会被执行。
  2. 浏览器兼容性问题:虽然大部分现代浏览器支持 e.preventDefault()
    来阻止粘贴操作,但是可能存在某些特定环境下或旧版浏览器不支持此行为。
  3. Quill 编辑器内部处理:Quill编辑器作为一个富文本编辑器,其内部可能对粘贴事件有自己的处理逻辑,这可能导致直接在 quill.root上添加的事件监听器无法完全控制粘贴行为

解决办法
针对上述可能的问题,可以尝试以下解决方案:

  1. 检查 Quill 文档:首先查看 Quill 的官方文档或源码,确认是否有更推荐的方式来阻止特定类型的粘贴操作。
  2. 使用 Quill 的 API:尝试使用 Quill 提供的 API 来实现相同的功能。例如,可以通过监听 text-change
    事件来检测是否发生了粘贴操作,并根据内容类型决定是否保留更改。
  3. 增强事件监听:确保你的事件监听器是最先执行的,可以通过将 false 参数改为 true 改为使用事件捕获阶段来尝试提前拦截粘贴事件

解决方案1和2,我没找到对应的解决办法,直接放弃,接着让前端小伙伴试着把addEventListener(‘paste’, this.handlePaste, false);中的fasle改成true,结果生效了,功夫不有心人啊!

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

力扣516-最长回文子序列(Java详细题解)

题目链接&#xff1a;力扣516-最长回文子序列 前情提要&#xff1a; 因为本人最近都来刷dp类的题目所以该题就默认用dp方法来做。 dp五部曲。 1.确定dp数组和i下标的含义。 2.确定递推公式。 3.dp初始化。 4.确定dp的遍历顺序。 5.如果没有ac打印dp数组 利于debug。 每…

接口测试Postman关联,断言,前置,参数化用法

一、Postman下载 我们直接搜索Postman官网下载即可 Postman API Platformhttps://www.postman.com/ 二、使用 下载安装完成后我们需要登录注册&#xff0c;按照Postman的指示进行注册登录&#xff0c;不登陆可能有些功能无法使用 登陆完成我们就可以开始对接口进行测试了 …

C++速通LeetCode中等第27题-二叉树展开为链表(两种迭代法)

迭代法一&#xff1a;额外容器&#xff0c;前序遍历暴力求解&#xff08;空间O(n)) /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* …

Tableau|一入门

一 什么是BI工具 BI 工具即商业智能&#xff08;Business Intelligence&#xff09;工具&#xff0c;是一种用于收集、整理、分析和展示企业数据的软件系统&#xff0c;其主要目的是帮助企业用户更好地理解和利用数据&#xff0c;以支持决策制定。 主要功能&#xff1a; 1.数据…

springboot在线教学平台

基于springbootvue实现的在线教学平台 &#xff08;源码L文ppt&#xff09;4-069 4.1系统结构设计 这些功能可以充分满足在线教学平台的需求。此系统功能较为全面如下图系统功能结构如图4-1所示。 图4-1功能结构图 4.2系统功能模块设计 在线教学平台的使用者主要有二类…

技术速递|宣布 Azure Container Apps 上的 Java 体验正式推出

作者&#xff1a;Sean Li 排版&#xff1a;Alan Wang Azure Container Apps 是一个完全托管的、无服务器容器平台&#xff0c;使您能够构建、部署和运行容器化应用程序。使用 Azure Container Apps 您可以弹性扩缩容。您可以使用统一的网络设计弹性微服务&#xff0c;并利用启用…

频率增强通道注意力机制(FECAM)学习总结

本文提出了一种新的频率增强通道注意力机制&#xff08;FECAM&#xff09;&#xff0c;旨在解决时间序列预测中傅里叶变换因吉布斯现象导致的高频噪声问题。FECAM基于离散余弦变换&#xff0c;能自适应地模拟信道间的频率依赖性&#xff0c;有效避免预测误差。实验显示&#xf…

赛意SMOM和金蝶云星空接口打通对接实战

赛意SMOM和金蝶云星空接口打通对接实战 对接源平台:赛意SMOM 赛意信息已经发展成为国内企业数字化服务领域最具发展潜力的领军企业之一&#xff0c;聚焦于工业互联网、智能制造、新一代信息技术、数字化转型等领域的技术与商业模式应用&#xff0c;为企业提供高端软件咨询、实施…

成为谷歌开发者专家(GDE)的经历

大家好&#xff0c;我是张海龙(Jason)。经过一年多的准备&#xff0c;GDE申请 终于正式成功通过面试&#xff0c;成为了国内第一位Firebase GDE。下面对整个过程做个总结&#xff0c;希望对大家有所帮助。 1.什么是 GDE&#xff1f; Google Developers上面有详细的说明&#x…

Craft:年度 Mac 应用,卡片式笔记新星

今年的年度 Mac 应用大奖颁给了Craft&#xff0c;这是一款集笔记、文档和个人管理于一体的独特工具。Craft 最大的亮点在于其卡片式的交互设计&#xff0c;这种设计让信息组织变得更加直观且高效。 尽管它仅上线了一年时间&#xff0c;但已经展现出了不输于许多老牌笔记应用的…

前端开发迎来新机会,全栈转型就靠这个!

在如今的开发世界&#xff0c;全栈开发者已成为许多前端开发者的新目标。随着技术的不断演进&#xff0c;前端不再局限于写页面和样式&#xff0c;而是逐渐向后端延伸&#xff0c;甚至触及数据库和云服务。如果你想在职业道路上更进一步&#xff0c;向全栈开发者靠拢&#xff0…

【JavaEE】——多重锁,死锁问题和解决思路

阿华代码&#xff0c;不是逆风&#xff0c;就是我疯&#xff0c;你们的点赞收藏是我前进最大的动力&#xff01;&#xff01;希望本文内容能够帮助到你&#xff01; 目录 一&#xff1a;加锁的“可重入性” 1&#xff1a;问题引入 2&#xff1a;问题分析 3&#xff1a;可重…

springboot快速开发平台使用达梦数据库

1.首先来到DM管理工具 大致流程是&#xff1a;创建表空间&#xff08;用于给新建的用户使用&#xff09;-》创建用户&#xff08;绑定表空间&#xff09; 文件位置 2.创建用户 来到所属角色页面&#xff0c;第一个权限管理员一定要勾上&#xff0c;其他的看情况 3.来到DM数…

Java项目实战II基于SSM的国外摇滚乐队交流和周边售卖系统的设计与实现(开发文档+数据库+源码)

目录 一、前言 二、技术介绍 三、系统实现 四、文档参考 五、核心代码 六、源码获取 全栈码农以及毕业设计实战开发&#xff0c;CSDN平台Java领域新星创作者 一、前言 随着互联网技术的飞速发展&#xff0c;信息传播的广度和深度不断拓展&#xff0c;为各行业的创新发展…

GPIO与MIO控制LED——ZYNQ学习笔记2

一、GPIO简介 ZYNQ 分为 PS 和 PL 两部分&#xff0c;那么器件的引脚&#xff08; Pin&#xff09;资源同样也分成了两部分。 ZYNQ PS 中的外设可以通过 MIO&#xff08; multiplexed I/O&#xff0c;多路复用 I/O&#xff09;模块连接到 PS 端的引脚上&#xff0c;也可以通过 …

Python近红外光谱数据分析

ChatGPT4.0在近红外光谱数据分析、定性/定量分析模型代码自动生成等方面的强大功能&#xff0c;同时更加系统地学习人工智能&#xff08;包括传统机器学习、深度学习等&#xff09;的基础理论&#xff0c;以及具体的代码实现方法掌握ChatGPT4.0在科研工作中的各种使用方法与技巧…

C++学习笔记----8、掌握类与对象(一)---- 对象中的动态内存分配(1)

1、FRIENDS c允许类声明为其它类&#xff0c;其它类的成员函数&#xff0c;或者非成员函数为friend。可以访问protected与private数据成员与成员函数。例如&#xff0c;假设你有两个类Foo与Bar。你可以指定Bar类是Foo类的一个friend&#xff1a; class Foo {friend class Bar;…

C++之哈希 --- 哈希的应用(位图布隆过滤器)

一、位图 1.1 位图的基本概念 在如今网络交通高度发达的时代&#xff0c;网购已经成为我们日常生活中的一部分。没当双11到来&#xff0c;各大平台都会迎来一次网购的高潮。这就会让服务器短时间内获得高达几十亿上百亿的数据&#xff0c;那我们该如何去处理这海量的数据呢&am…

FortiGate 防火墙 DNS 地址转换(DNS Translation)

简介 本例介绍 FortiGate 防火墙 DNS 地址转换&#xff08;DNS Translation&#xff09;配置方法。 一、 网络结构 网络结构如下图&#xff0c;PC1 连接在 FG60B 的 Internal 接口&#xff0c;FG60B 的 Wan1 接口连接 FG80CM 的 DMZ 接口&#xff0c;Wan1 接口开启 DNS 服务…

开发环境搭建之windows和ubuntu系统互传文件

ubuntu和Windows主机之间的文件传输有很多种&#xff0c;安装VMware Tools后&#xff0c;可以设置虚拟机共享文件夹&#xff0c;将Windows主机的文件目录挂载到ubuntu中&#xff0c;实现文件共享。 设置方法如下&#xff0c;点击菜单栏的“虚拟机”&#xff0c;选择“设置”。…