Summernote无法在“节点”上执行“ appendChild”

时间:2020-05-19 15:55:12

标签: javascript jquery summernote

在非常特殊的情况下,调用Summernote对象上的pasteHTML()方法时,我会收到“无法在“节点”上执行'appendChild'的消息”。

我想强调的是,在下面描述的非常具体的情况下,我所做的一切都可以正常运行。要记住这一点很重要,因为错误的“触发”根本没有意义。

我有一个Web应用程序,该应用程序实现了自定义消息传递系统,创建,阅读,回复等。Summernote编辑器用于撰写。单击“答复”按钮时,原始消息将添加到Summernote编辑器中(通过pasteHTML()方法)。再次,这正常(通常)。我可以进入页面,阅读消息,翻阅页面,并且当我回复给定消息时,它通常都按设计工作。

现在出现问题的情况。这是唯一可以使错误弹出的情况。

如果(如果这是令人发疯的地方,是的,我可以复制它),如果在单击“答复”按钮之前再次单击页面上的“任何地方”,空格,文本,实际上在任何地方(同样,这通常会起作用),并且然后点击“回复”按钮,错误弹出。

进行审查;加载页面,单击页面上任何非交互区域,然后单击Reply(调用pasteHTML()方法,将弹出错误。

所以我的问题是;当我单击页面的“空白区域”以影响后续对pasteHTML()的调用时,可能会发生什么。

这是浏览器控制台中的实际错误:

dom.js:398 Uncaught DOMException: Failed to execute 'appendChild' on 'Node': Only one element on document allowed.
at insertAfter (https://localhost:44328/lib/summernote/dist/summernote-bs4.js:1079:18)
at splitNode (https://localhost:44328/lib/summernote/dist/summernote-bs4.js:1408:23)
at https://localhost:44328/lib/summernote/dist/summernote-bs4.js:1451:18
at Array.reduce (<anonymous>)
at splitTree (https://localhost:44328/lib/summernote/dist/summernote-bs4.js:1447:24)
at Object.splitPoint (https://localhost:44328/lib/summernote/dist/summernote-bs4.js:1481:32)
at WrappedRange.insertNode (https://localhost:44328/lib/summernote/dist/summernote-bs4.js:2150:26)
at https://localhost:44328/lib/summernote/dist/summernote-bs4.js:2170:26
at Array.map (<anonymous>)
at WrappedRange.pasteHTML (https://localhost:44328/lib/summernote/dist/summernote-bs4.js:2169:35)
insertAfter @ dom.js:397
splitNode @ dom.js:761
(anonymous) @ dom.js:809
splitTree @ dom.js:804
splitPoint @ dom.js:840
WrappedRange.insertNode @ range.js:518
(anonymous) @ range.js:541
WrappedRange.pasteHTML @ range.js:540
(anonymous) @ Editor.js:140
(anonymous) @ Editor.js:597
Context.invoke @ Context.js:227
summernote @ summernote.js:37
(anonymous) @ messaging.js?v=45N8mkloxmbpeQNrnX0KaIQaIrl7_lzbhcOQ1JECSnw:133
dispatch @ jquery.js:5233
elemData.handle @ jquery.js:5040

1 个答案:

答案 0 :(得分:0)

对于感兴趣的任何人,我通过在粘贴HTML之前确保“ summernote”控件可见来纠正了该行为。

现在,为什么仅在单击页面的空白区域时才会显示该行为,但我却可以解决此问题。