JS获取剪切板内容

JS获取剪切板内容,第1张

因为最近有个需求,在从后台定时获取数据后展示,可以加粗和改变字体颜色,并且支持redo和undo,但不支持编辑文字,其实就是加个富文本但不能编辑。我刚拿到需求想,这不是很简单的需求,但后来发现这就是个坑。。

1、刚一开始,我用了项目原本使用的富文本编辑器 vue-html5-editor ,但发现并不能实现不编辑文字又能改样式,这时的我还没有意识到事情的严重性,以为只是个例,于是我又找了另一款富文本编辑器。

2、 wangeditor 是一款国人开发的富文本编辑器,轻量、强大,但它也不支持不编辑文字又能改样式,于是我觉得我得明白这些编辑器的原理到底是怎样的。

3、在查看了源码后,我终于明白上面的两款编辑器为什么不能不编辑文字又能改样式。上面的编辑器实现原理是根据 contenteditable 这个属性来使一个div变为可编辑状态,并且利用 execCommand 方法实现粗体、字体等一系列样式实现,但这个方法只在div是可编辑状态时可用,所以当我把contenteditable改为false后,execCommand就不管用了,所以才改不了样式。

4、知道了这点后,我明白应该寻找一款不依赖execCommand的富文本编辑器,我找到了 tiptap 和 ckeditor5 。

5、在对这两款进行了一定研究后,我发现了另一问题--它们会清除元素中的自定义属性。

例如这样的数据,会变为这样

这是我不能接受的,我开始了漫长的寻找解决办法之路。

经过了很长时间的看源码--查资料--看源码,终于解决了这个问题。

我使用的是 element-tiptap ,其实直接使用tiptap也可以,但因为我的项目就是使用的element-ui,所以我直接使用了这个库。

首先需要

然后

具体的我就不说了,我主要说自己写的span这个节点

attrs里就是需要保留的属性,parseDOM就是解析dom时所触发的方法,可以在这里获取到属性,在toDOM生成DOM是把这些属性加上。

======================================================================================》

最后我还是使用了quill,因为delta。。。

quill配置如下:

后台的数据处理与实时联动用到了ShareDB和richText

处理数据时使用 wss动态给到delta数据,然后使用setContents显示到页面上

使用text-change监听事件监听文本改动并返回

记录一下。

以上就是关于JS获取剪切板内容全部的内容,包括:JS获取剪切板内容、富文本编辑器-1-选型、wangeditor复制word存在换行符等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9569375.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-29
下一篇2023-04-29

发表评论

登录后才能评论

评论列表(0条)

    保存