【发布时间】:2020-09-05 18:31:23
【问题描述】:
在一组非常特殊的情况下,当在 Summernote 对象上调用 pasteHTML() 方法时,我得到“无法在 'Node' 上执行 'appendChild'”。
我想强调的是,除了下面描述的非常具体的情况之外,我所做的一切都很完美。记住这一点很重要,因为错误的“触发器”根本没有意义。
我有一个实现自定义消息传递系统的网络应用程序,可以创建、阅读、回复等。Summernote 编辑器用于撰写。单击“回复”按钮时,原始消息将添加到 Summernote 编辑器(通过 pasteHTML() 方法)。同样,这有效(通常)。我可以来到页面,阅读消息,翻页,当我去回复给定消息时,它会按设计(通常)工作。
现在来看问题发生的情况。这是我可以弹出错误的唯一情况。
如果,(这是它变得疯狂的地方,是的,我可以复制它)如果我在点击回复按钮之前点击页面上的任何地方、空格、文本,实际上是任何地方(再次,这通常有效)和然后点击回复按钮,错误弹出。
审查;加载页面,点击页面任意非交互区域,点击回复(调用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
【问题讨论】:
标签: javascript jquery summernote