QuillJS - 粘贴到编辑器时删除格式

问题描述 投票:0回答:2

我之前使用过 https://github.com/quilljs/quill/issues/1184#issuecomment-403657128 来确保没有人可以在 QuillJS 编辑器中粘贴格式化文本,因为我希望人们只使用少数几个编辑我从 QuillJs 启用的按钮。从那时起,它就不再对我有用了。我的问题是:

  • 这对其他人都有效吗?
  • 如果没有,您知道替代方案吗?
reactjs typescript quill react-quill react-quilljs
2个回答
1
投票

关于 https://github.com/quilljs/quill/issues/1184#issuecomment-403657128 的一件事可能与您的预期不同,可能是

'silent'

“导致文本更改的 API 也可以使用“静默”源调用,在这种情况下,不会发出文本更改。不建议这样做,因为它可能会破坏撤消堆栈和其他依赖于完整记录的函数文本更改。” [ https://quilljs.com/docs/api/#events ]

因此,如果您希望发出

text-change
事件但没有得到它,请更改这两行

this.quill.updateContents(delta, 'silent')
this.quill.setSelection(index, length, 'silent')

像这样:

this.quill.updateContents(delta, 'user')
this.quill.setSelection(index, length, 'user')

然后

text-change
事件将被触发。


0
投票

Pelo js conseguir da seguinte maneira Adicionei um evento pra capture e depois uso o Delta Pra Removal and formatação

<script>
        const quill = new Quill('#editor', {
            theme: 'snow'
        });
        const Delta = Quill.import('delta');

        // Remover formatação quando um texto e colado no editor
        quill.clipboard.addMatcher(Node.ELEMENT_NODE, function(node, delta) {
            if (node.children.length > 0) { //opcional
                node.textContent += '\n'
            }
            return new Delta().insert(node.textContent);
        });

        quill.on('text-change', function(delta, oldDelta, source) {
            let content = quill.root.innerHTML.replace(/&nbsp;/g, ' ');
            content = content.replace(/&[^;]+;/g, '');
            console.log(content);
        });
    </script>

© www.soinside.com 2019 - 2024. All rights reserved.