gpt4 book ai didi

javascript - CKEditor:PasteFromWord 忽略 pasteFilter

转载 作者:搜寻专家 更新时间:2023-11-01 04:22:30 26 4
gpt4 key购买 nike

在 CKEditor 4.6.2 中(目前捆绑在 Drupal 8 中)ACF 默认被禁用,以确保一些特殊插件正常工作。所以郑重声明:我不想启用 ACF,也无法使用 allowedContentdisallowedContent。我试图阻止某些元素从 Word 粘贴到粘贴上(例如 h1p[styles])。

为了实现这一点,我试图将它们添加到 pasteFilter 中,它在非 Word 粘贴的内容上完美运行,尽管从 Word 粘贴时,pasteFilter 似乎被忽视?这是一个错误吗?

那么,我怎样才能:

  1. 禁用 ACF - 支持特殊的 Drupal 元素
  2. 保持 pastefromword 启用 - 检测特殊的 Word 样式,如缩进和列表。
  3. 所有(包括来自 Word 的)粘贴添加额外的过滤 - 删除一些元素和属性,如 h1style= “字体系列:Verdana” 等...

最佳答案

处理从 Word 粘贴的内容需要大量的标记处理才能将其转换为干净的语义内容。来自 Word 过滤器的粘贴非常具体,涵盖了许多边缘情况(尤其是嵌套列表)。从 Word 粘贴有其自己的过滤器并且不重用 ACF 规则的原因是它可能会导致一些冲突 - 在 this issue 中有描述。 .

至于现在,现在有开箱即用的方法可以为从 Word 粘贴的内容添加额外的过滤。但是,您可以使用 afterPasteFromWord事件,过滤粘贴的数据,如:

var editor = CKEDITOR.replace( 'editor1' );

editor.on( 'afterPasteFromWord', function( evt ) {
var filter = editor.activeFilter, // Use activeFilter so it reflects ACF settings.
// var filter = new CKEDITOR.filter( 'p b' ), // Use custom new filter.
fragment = CKEDITOR.htmlParser.fragment.fromHtml( evt.data.dataValue ),
writer = new CKEDITOR.htmlParser.basicWriter();

filter.applyTo( fragment );
fragment.writeHtml( writer );
evt.data.dataValue = writer.getHtml();
} );

请参阅this codepen demo .

您也可以引用官方文档 CKEDITOR.filter.applyToCKEDITOR.editor.activeProperty .

关于javascript - CKEditor:PasteFromWord 忽略 pasteFilter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45501341/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com