1

给定Quill 1.3.6和自定义格式化程序,有没有办法以编程方式从整个编辑器中删除所有自定义格式?换句话说,有没有办法bold从文档中出现的每个地方删除例如格式?

quill.removeFormat()似乎不是选项,因为它没有按格式为您提供过滤器。

任何想法?

4

3 回答 3

2

如果您false作为值参数传递给format函数,则可以删除特定类型的格式。

例如format('bold', false)从当前选定的文本中删除粗体(但没有其他格式)。或者formatText(0, 100, 'bold', false)删除前 100 个字符的粗体格式。

这是在 API 文档中指定的(虽然它只出现在formatLineandformatText中,但它也适用于格式):https ://quilljs.com/docs/api/#formatting

于 2021-01-15T13:59:46.180 回答
0

我能够想出这样的解决方案(它似乎没有很好的性能,但是做我需要的)。

const deltas = quill.getContents().map(delta => {
    const attributes = delta.attributes;
    if (attributes) {
        delete attributes['<YOUR ATTRIBUTE TO DELETE>'];
    }

    return delta;
});
quill.setContents(deltas);
于 2020-11-26T12:03:30.193 回答
0

我正在使用 npm 包 sanitize-html 做类似的事情。

您的用例示例:

import sanitizeHtml from 'sanitize-html';
const dirtyText = '<p>My <strong>dirty</strong> text</p>';
const cleanText = sanitizeHtml(dirtyText, {
  exclusiveFilter: (frame) => frame.tag !== 'strong'
});

否则,您可以(我认为这更好)使用“allowedTags”属性列出您允许的标签:

import sanitizeHtml from 'sanitize-html';
const dirtyText = '<p>My <strong>dirty</strong> text</p>';
const cleanText = sanitizeHtml(dirtyText, {
  allowedTags: ['span', 'p', 'h2', 'a', 'u', 'em', 's']
});
于 2020-11-26T07:53:21.930 回答