Javascript CKEditor:在粘贴时应用removeFormat
我已经成功地设置了一个on-paste事件来捕获粘贴到文本区域中的HTML 我需要在HTML粘贴到文本区域之前或粘贴到文本区域时自动将removeFormat命令应用于该HTML,以便将其从类、各种标记和其他属性中剥离出来。有人能给我指出正确的方向来正确应用removeFormat命令吗 以下是我目前的代码:Javascript CKEditor:在粘贴时应用removeFormat,javascript,ckeditor,Javascript,Ckeditor,我已经成功地设置了一个on-paste事件来捕获粘贴到文本区域中的HTML 我需要在HTML粘贴到文本区域之前或粘贴到文本区域时自动将removeFormat命令应用于该HTML,以便将其从类、各种标记和其他属性中剥离出来。有人能给我指出正确的方向来正确应用removeFormat命令吗 以下是我目前的代码: $(function(){ $('textarea').ckeditor( function( textarea ){
$(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,那将更为理想。自我上次答复以来,情况发生了一些变化,您的要求也是可能的:检查,有关粘贴的更多信息也可以在此处找到: