h5 富文本输入框_富文本输入框

Web聊天工具的富文本输入框

最近折腾 Websocket,打算开发一个聊天室应用练练手。在应用开发的过程中发现可以插入 emoji ,粘贴图片的富文本输入框其实蕴含着许多有趣的知识,于是便打算记录下来和大家分享。

首先来看看 demo 效果:

是不是觉得很神奇?接下来我会一步步讲解这里面的功能都是如何实现的。

输入框富文本化

传统的输入框都是使用 来制作的,它的优势是非常简单,但最大的缺陷却是无法展示图片。为了能够让输入框能够展示图片(富文本化),我们可以采用设置了 contenteditable="true" 属性的

来实现这里面的功能。

简单创建一个 index.html 文件,然后写入如下内容:

打开浏览器,就能看到一个默认已经带了一张图片的输入框:

光标可以在图片前后移动,同时也可以输入内容,甚至通过退格键删除这张图片——换句话说,图片也是可编辑内容的一部分,也意味着输入框的富文本化已经体现出来了。

接下来的任务,就是思考如何直接通过 control + v 把图片粘贴进去了。

处理粘贴事件

任何通过“复制”或者 control + c 所复制的内容(包括屏幕截图)都会储存在剪贴板,在粘贴的时候可以在输入框的 onpaste 事件里面监听到。

document.querySelector('.editor').addEventListener('paste', (e) => {

console.log(e.clipboardData.items)

})

而剪贴板的的内容则存放在 DataTransferItemList 对象中,可以通过 e.clipboardData.items 访问到:

细心的读者会发现,如果直接在控制台点开 DataTransferItemList 前的小箭头,会发现对象的 length 属性为0。说好的剪贴板内容呢?其实这是 Chrome 调试的一个小坑。在开发者工具里面,console.log 出来的对象是一个引用,会随着原始数据的改变而改变。由于剪贴板的数据已经被“粘贴”进输入框了,所以展开小箭头以后看到的 DataTransferItemList 就变成空的了。为此,我们可以改用 console.table 来展示实时的结果。

在明白了剪贴板数据的存放位置以后,就可以编写代码来处理它们了。由于我们的富文本输入框比较简单,所以只需要处理两类数据即可,其一是普通的文本类型数据,包括 emoji 表情;其二则是图片类型数据。

新建 paste.js 文件:

const onPaste = (e) => {

// 如果剪贴板没有数据则直接返回

if (!(e.clipboardData && e.clipboardData.items)) {

return

}

// 用Promise封装便于将来使用

return new Promise((resolve, reject) => {

// 复制的内容在剪贴板里位置不确定,所以通过遍历来保证数据准确

for (let i = 0, len = e.clipboardData.items.length; i < len; i++) {

const item = e.clipboard

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
h5移动端富文本编辑器是一种用于在移动设备上创建、编辑和排版富文本内容的工具。它通过简单而强大的用户界面,使用户能够以直观的方式对文本进行格式化和排版,同时支持插入图片、链接、表格和其他富媒体元素。 相比传统的文本编辑器,h5移动端富文本编辑器具有以下优点: 1. 响应式设计:移动设备的屏幕空间有限,h5移动端富文本编辑器能够根据屏幕大小动态调整布局和功能,以适应不同设备的需求。 2. 触摸友好:h5移动端富文本编辑器采用触摸屏操作,支持手指滑动、捏合和缩放等手势,使得编辑过程更加流畅自然。 3. 自动保存:编辑器可以自动保存用户的编辑内容,防止意外关闭或断网等情况下的数据丢失,提供更好的用户体验。 4. 多样化的样式和工具:编辑器提供丰富的文本样式和排版选项,如字体、颜色、加粗、斜体等,还支持插入图片、链接、表格等富媒体元素,使用户能够创建出更具表现力的文档。 5. 兼容性强:h5移动端富文本编辑器具有良好的兼容性,可以在主流的移动端浏览器中运行,不需要安装额外的插件或应用程序,方便用户在不同设备上进行编辑和调整。 综上所述,h5移动端富文本编辑器是一种功能强大、操作简便的工具,适用于移动设备上创建和编辑富文本内容,能够满足用户对于文本排版和富媒体元素插入的需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值