Javascript CKEditor:在粘贴时应用removeFormat

Javascript CKEditor:在粘贴时应用removeFormat,javascript,ckeditor,Javascript,Ckeditor,我已经成功地设置了一个on-paste事件来捕获粘贴到文本区域中的HTML 我需要在HTML粘贴到文本区域之前或粘贴到文本区域时自动将removeFormat命令应用于该HTML,以便将其从类、各种标记和其他属性中剥离出来。有人能给我指出正确的方向来正确应用removeFormat命令吗 以下是我目前的代码: $(function(){ $('textarea').ckeditor( function( textarea ){

我已经成功地设置了一个on-paste事件来捕获粘贴到文本区域中的HTML

我需要在HTML粘贴到文本区域之前或粘贴到文本区域时自动将removeFormat命令应用于该HTML,以便将其从类、各种标记和其他属性中剥离出来。有人能给我指出正确的方向来正确应用removeFormat命令吗

以下是我目前的代码:

$(function(){
        $('textarea').ckeditor(
            function( textarea ){
                var editor = this;
                editor.on('paste', function( e ) { 
                    //alert(e.data.html); // This shows the HTML
                    editor.execCommand( 'removeFormat', e.data.html ); // Doesn't seem to do anything, HTML is pasted with the attributes intact
                    });              
            }
        )
    });
谢谢


请注意,强制纯文本选项不可行,因为我希望保留一些HTML元素(p、table和其他)。

您需要先选择内容,然后才能对其应用removeFormat

您可以尝试抓取范围(即使它只是位于插入点的光标)并在粘贴之前保存书签

粘贴后,使用书签再次选择该范围

这将选择在范围的开始和结束之间粘贴的所有内容

然后可以使用removeFormat:

editor.execCommand( 'removeFormat', editor.selection );
以下是指向范围和选择API页面的链接:

我发现使用范围更容易,createBookmark方法很好,因为它设置了标记,即使DOM发生了变化(粘贴到新内容时也是如此),您也可以获取正确的起点和终点。粘贴后可以使用moveToBookmark()选择范围

因为文档很少,我发现搜索源代码查找调用方法的位置很有帮助。看看它们是如何使用的,让我更好地了解我需要将这些方法应用于什么样的对象

好,, 乔

你可以用

config.forcePasteAsPlainText = true;

cf

从CKEditor 4.1开始,不需要进行自定义编码来定义将数据粘贴到CKEditor中时应保留的元素列表,应该这样做


使用默认配置保持ACF启用状态-CKEditor将接受可以使用它创建的所有标记,或者使用或多或少严格的允许标记/属性/样式集定义您自己的规则集。请看

您是否有机会分享您最终是如何解决这一问题的?我试着阅读了接受答案中提供的各种文档和链接,但似乎不知道如何选择文本并对其应用removeFormat命令;在我的情况下,我不认为这是OP真正在问的问题?
forcePasteAsPlainText
是否不剥离所有HTML?OP要求执行
删除格式
,这将尝试仅剥离中定义的标记和属性,如果我没有弄错的话?如果我错了,请纠正我。我发现这是一个限制,因为您无法根据内容是否粘贴和最终用户手动输入来定义操作。如果您可以根据事件类型触发不同的ACF,那将更为理想。自我上次答复以来,情况发生了一些变化,您的要求也是可能的:检查,有关粘贴的更多信息也可以在此处找到: