React-Quill中图片粘贴的兼容问题
来源:互联网 发布:wowapp是什么软件 编辑:程序博客网 时间:2024/05/01 00:17
上一篇文章里说道quill在谷歌浏览器中只有部分功能可用,由于是一个国外私人写的模块,现在没有再优化了。我自己尝试改了一下,先说一下我自己的优化,也希望前端大佬给出优化建议。
看一下quill-image-drop-module
的源码,内容不多,只有五个函数,一个构造函数,两个粘贴删除监听函数,以及两个功能函数。
源码地址:https://github.com/kensnyder/quill-image-drop-module
我只修改了handlePaste
这个粘贴函数,下面是修改后的代码。
handlePaste(evt) { if (evt.clipboardData && evt.clipboardData.items && evt.clipboardData.items.length) { this.readFiles(evt.clipboardData.items, dataUrl => { const userAgent = navigator.userAgent; // 取得浏览器的userAgent字符串 if (userAgent.indexOf('Firefox') > -1) { const selection = this.quill.getSelection(); if (selection) { // we must be in a browser that supports pasting (like Firefox) // so it has already been placed into the editor } else { // otherwise we wait until after the paste when this.quill.getSelection() // will return a valid index setTimeout(() => this.insert(dataUrl), 0); } } else { setTimeout(() => this.insert(dataUrl), 0); } }); }}
前文说道,火狐浏览器完美支持,是因为火狐自带粘贴图片功能,而谷歌只支持一半。我们看到模块作者在粘贴图片函数中进行了判断,如果没有这段判断,火狐浏览器会出现同时粘贴两张一样图片的情况,而谷歌浏览器则能截取浏览器外的图片粘贴。这是因为quill编辑器本身会有部分粘贴功能。
于是我进行了浏览器的判断,如果是火狐浏览器,则进行判断,保证只粘贴一张图片。如果是谷歌,则不进行判断,直接粘贴进去。但这样就引出了新的问题,就是如果右键复制网页中的图片,看到在谷歌浏览器中除图片外,会多一条链接地址,这是因为quill默认的功能,我试着在另2个函数readFiles
和insert
中筛选掉,但没找到解决办法。
虽然还存在问题,但至少功能都实现了,而且实际业务中多数是使用微信或qq的截图然后贴入,这种情况不会有链接,但在开头会有一个空行。
至于Safari浏览器,还是完全不支持,我试了知乎的富文本框,也同样不支持Safari,所以就不考虑了。
我们浏览器调试可以看到贴入的图片是base64编码的,如果直接存入数据库会很占空间,这个下一篇文章会说我的解决办法,同时会介绍一个图片放大浏览的组件。
这篇就先介绍到这。前端小白,刚刚入门,请多多指教。
- React-Quill中图片粘贴的兼容问题
- React中使用富文本编辑器Quill,支持粘贴图片
- React-Quill中的图片上传及显示
- 富文本编辑器react-quill的使用
- 富文本编辑器Quill的简单React封装
- quill自定义图片上传
- 推荐一款Markdown富文本编辑器 React-quill,以及修改React-quill默认配置,支持React !
- 图片延迟加载中使用table的兼容问题修改
- IE,FireFox浏览器当选中图片就显示的兼容问题
- css中图片路径,以及在不同浏览器的兼容问题
- IOS手机中图片的复制粘贴,剪切
- 图片在wps中复制粘贴的问题
- vue-quill-editor自定义图片上传
- vue-quill-editor自定义图片上传
- 图片的粘贴上传组件
- React-Native项目中应用剪贴板复制粘贴操作
- 关于博客编辑器中直接粘贴图片
- JS中getYear()的兼容问题
- 分别用5种分类算法对约会网站匹配效果进行改进,比较评分
- 数据结构-栈应用(中缀转后缀并计算结果)
- HOJ 3282 skyscraper(拓扑排序)
- (3) Hadoop-HDFS分布式文件系统
- Android SO文件的兼容和适配
- React-Quill中图片粘贴的兼容问题
- 搜索引擎之全文搜索算法功能实现(基于Lucene)
- STL-Lesson001_2_实现MyStack类
- Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields ∗ 实时多人人体姿态估计论文原理讲解
- CentOS 7.2 yum安装LAMP环境
- Python GUI之tkinter 实战(二)
- Zynq平台下linux的I2C驱动(RTC+EEPROM)
- Java实现二分查找算法
- Leetcode 419. Battleships in a Board