PageKit — 可自托管的 GrapesJS 建站工具,附完整源码。 获取抢先体验

问题 #1797💬 已回答提出于 2019年2月14日作者 arachnosoft0 个反应

内部拖放出现奇怪问题——内容丢弃 === “null”

快速解答作者 artf

谢谢你的报告@arachnosoft 顺便说一句,我能复现它,但只有在第一个CKEditor实例激活后,你能确认吗?

阅读下方完整回答 ↓

问题

你好@artf, 我遇到了一个非常奇怪的问题,与HTML5拖放有关。 当我用鼠标选择 grapesjs中混合内容,包括可编辑的文本内容和周围的组件作为整体选择时,丢失(复制)的内容有时是“null”(包含“null”文本值的字符串,而非JavaScript的null)。 我已经在 Chrome 71.0.3578.98 的新闻通讯演示中成功重现了这个问题。我不知道其他浏览器是否也会出现这个问题...... ![grapesjs 虚空变形](https://user-images.githubusercontent.com/42835357/52798051-772a1980-3077-11e9-970c-edebaab49d02.gif) 当问题出现时,我注意到在捕捉canvas:dragdata事件时,result.content变量是“null”(字符串)。我查看了调用栈,发现这个值来自dataTransfer.getData(“text/html”)调用, grapesjs核心Droppable.getContentByData()函数: '} 否则如果 (((0, underscore.indexOf)(types, 'text/html') >= 0) { content = dataTransfer.getData('text/html').replace(/<\/?...

回答(3)

artf• 2019年2月16日

谢谢你的报告@arachnosoft 顺便说一句,我能复现它,但只有在第一个CKEditor实例激活后,你能确认吗?

arachnosoft• 2019年2月18日

是的,@artf,这似乎正是测试案例...... 如果我刷新页面以获得干净的上下文,清空画布,丢弃一个网格组件(相当复杂的),选择部分文本和周围单元格(但不激活CKEditor),然后从文本中拖拽,它就能正常工作。 但只要我双击某个单元格激活CKEditor,点击其他地方关闭编辑,并按照上面完全相同的步骤(选择和拖拽完全一样),丢失的内容就会变成“null”。 ![Grapesjs 第1797期第1期](https://user-images.githubusercontent.com/42835357/52960021-1a40a300-3398-11e9-820d-51f6b4186d8...

artf• 2019年2月21日

我注意到,每次编辑一个新组件时,DOM里都会创建一个新的CKEditor实例,尽管CKEditor插件使用的是CKEditor的inline()方法。我不知道这是不是“设计使然”,或者这是否能解释这类问题。

是的,这就是他们的内嵌插件工作方式,但我觉得这和这有什么关系

顺便说一句,CKEditor确实会在dataTransfer对象和编辑中添加类型,出于某种原因(可能是为了处理它们的一些边缘情况),“文本/纯文本”(GrapesJS完全依赖原生对象,但不涉及它们)。

相关问答

通过相似的问题讨论继续研究。

与此问题匹配的付费插件

根据问题关键词和标签相关性精选,助你更快交付。

查看全部插件

正在加载付费插件推荐……

免费方案

在以下平台查看开源 GrapesJS 插件: GitHub 或在我们的免费目录中快速搜索。

浏览免费插件 →
高级方案

高级插件提供支持、定期更新和生产就绪的功能——为你节省数天的集成工作。

浏览高级插件 →

浏览插件分类

直接跳转到市场上的插件分类页面。