从 contenteditable div 中获取已删除的节点(Froala Editor)

丹尼斯·奥梅罗维奇

我正在尝试使用 MutationObserver 从 contenteditable 元素(在这种情况下为 Froala Editor)中获取 removeNodes,但在这种情况下,.comment没有获取已删除元素的类,而是得到了.fr-marker. 所以我正在寻找的是每次.comment从编辑器中删除带有类的元素以记录该元素.data-comment属性。一旦我得到那个removedNode,我就知道如何处理获取数据属性。

这是完整示例的小提琴:https : //jsfiddle.net/chille1987/urwoLqsf/16/

HTML

<div id="elem">
    <p>Click and <b>edit</b>, please</p>
    <p>Another paragraph goes here</p>
    <p>Third paragraph with <span class="comment" data-comment="2345">comment inside</span></p>
</div>

<link href="https://cdn.jsdelivr.net/npm/[email protected]/css/froala_editor.pkgd.min.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/[email protected]/js/froala_editor.pkgd.min.js"></script>

这是我的 JS 文件

var editor = new FroalaEditor('#elem', {
    events: {
        'initialized': function () {
            let observer = new MutationObserver(mutationRecords => {
                mutationRecords.forEach(mutation => {
                    mutation.removedNodes.forEach(node => {
                        console.log(node.classList.value)
                    })
                }); // console.log(the changes)
             });

            // observe everything except attributes
            observer.observe(document.querySelector('.fr-view'), {
                childList: true, // observe direct children
                subtree: true // and lower descendants to
            });
        }
    }
});

css 中突出显示的注释类

.comment {
    background: yellow;
}

这是删除带有注释的最后一段后的控制台。

在此处输入图片说明

灵族

实际上,您的代码应该可以工作。您看到的是 Froala 编辑器如何处理编辑内容。最终,您将获得正确的元素,您需要做的就是过滤已删除的节点:

mutation.removedNodes.forEach(node => {
  if(node.nodeName === 'SPAN' && node.className === "comment"){            
      console.log(node.textContent)
      const attribute = node.attributes.getNamedItem("data-comment")
      console.log(attribute.value)
  }
});

小提琴

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在contenteditable div中获取已删除的元素?

在contenteditable div中插入图片

contenteditable div退格键和删除文本节点问题

使用contenteditable div获取并设置光标位置

从div中删除字符后,光标移至contenteditable div的末尾

如何限制contenteditable div中的行数

替换contenteditable div中的选定文本

完全禁用[contenteditable] div中的粘贴

在contenteditable div中禁用图像的调整大小

不能將光標放在 contenteditable div 中的 non-contenteditable div 前面

从contenteditable div内的可拖动内容中删除默认样式

JavaScript-在contentEditable div中获取当前行的HTML

获取带有html标签的contenteditable div中的光标位置

通过React中的contentEditable进行更改后从div获取innerHTML

如何检测contenteditable div的内容是否已更改

div contentEditable但Readonly

从contentEditable div提取文本

如何在另一个具有多个 contentEditable div 的 div 中识别活动的 contentEditable div

Contenteditable div,获取表格值选项angular7

在contenteditable div中的插入符中插入html

如何在contenteditable div中的跨度中设置光标位置

在IE的contenteditable div中的输入框中插入文本

如何在contenteditable div中抓取某些单词

Click事件在contenteditable div中不起作用

如何滚动/聚焦到contenteditable div中的插入符号或元素?

如何获得在contenteditable div中编辑的确切元素?

Contenteditable div中的文件输入在FireFox上不起作用

如何使用jQuery UI在contenteditable div中拖放文本

ReactJS中ContentEditable Div上的Interrupt Enter键