我已经成功地设置了一个粘贴事件来捕获粘贴到文本区域中的
HTML.
我需要在粘贴到文本区域之前或粘贴到文本区域时自动将该HTMLFormat命令应用于该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,表和其他).
解决方法
您可以选择内容,然后才能将removeFormat应用到它.
您可以尝试抓取范围(即使只是光标位于插入点),并在粘贴之前保存书签.
粘贴后,使用书签再次选择该范围.
这应该选择您在范围的开始和结束之间粘贴的所有内容.
然后可以使用removeFormat:
editor.execCommand( 'removeFormat',editor.selection );
http://docs.cksource.com/ckeditor_api/symbols/CKEDITOR.dom.range.html
http://docs.cksource.com/ckeditor_api/symbols/CKEDITOR.dom.selection.html
我发现使用范围更容易,createBookmark方法是好的,因为它设置标记,即使DOM更改(就像在粘贴到新内容中一样),您可以获取正确的开始和结束点.粘贴后可以使用moveToBookmark()来选择范围.
http://docs.cksource.com/ckeditor_api/symbols/CKEDITOR.dom.range.html#createBookmark
因为文档稀少,所以我发现在调用方法的地方搜索源代码是有帮助的.看看它们是如何使用的,让我更好地了解我需要应用这些方法的对象.
好吧,乔