首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当文本由外部源更新时,防止ckeditor触发set回调

问当文本由外部源更新时,防止ckeditor触发set回调
EN

Stack Overflow用户
提问于 2020-01-22 23:41:58
回答 1查看 133关注 0票数 4

我正在做一个实时Vue项目,它使用ckeditor5作为文本编辑器。Pusher是一个使用websocket的实时API,用于将事件实时广播到其他Pusher实例。This is Pusher

在ckeditor配置中,我传递了一个set回调。这个set回调在任何文本更改时触发,我使用它来触发pusher事件,将文本值广播到其他pusher实例。

当另一个推送器实例接收到事件时,问题就出现了,在处理事件后,Vue会反应地更新DOM中的文本值,从而触发上面提到的set回调,从而再次触发事件。在实时环境中,它会扰乱值更新,并以文本闪烁结束。

在回调中,我只得到一个字符串值,我找不到是什么发起了回调,因此无法停止执行。

有没有办法防止ckeditor5触发回调?

这可能是每个基于websocket的项目都存在的问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-02-18 01:26:08

问题是,当更改触发广播时,Pusher客户端接收并应用它,然后随着客户端的更改而广播。当原始广播者接收到改变时,它不能确定它是否是它自己的改变,并且再次应用它。

在我几次尝试创建一个ckeditor插件来过滤掉ckeditor实例本身已经初始化的传入更改之后,我决定做一个变通来解决这个问题。

我创建了一个缓存,在广播初始化的更改之前,它会将它们存储几秒钟。当从Pusher客户端接收到更改时,该更改仅在缓存中不存在时才会应用,因此它是由另一个客户端初始化的。

此解决方法在大多数情况下都有效,但如果internet连接速度非常慢且响应时间较短(这取决于缓存时间),则仍可能存在问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59863345

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档