【问题标题】:Summernote Failed to execute 'appendChild' on 'Node'Summernote 无法在“节点”上执行“appendChild”
【发布时间】: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


    【解决方案1】:

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

    现在,为什么只有在点击页面的死区时才会出现这种行为,这让我无法理解,但我能够解决它。

    【讨论】:

      猜你喜欢
      • 2016-06-11
      • 1970-01-01
      • 2015-01-20
      • 1970-01-01
      • 2021-11-29
      • 2017-05-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多