主题: 请问 如何给编辑器加上onpaste事件? |
作者: jason, 发布日期: 2010-05-06 17:59:29, 浏览数: 8974 |
因为每次粘贴word过来的文字都会有一大堆的垃圾代码
所以我想当用户粘贴的时候,自动打开“粘贴无格式文本”的窗口 请问如何给编辑器加上 onpaste事件?多谢! |
作者: Roddy, 发布日期: 2010-05-06 23:21:27 |
粘贴方式有很多种,Ctrl+V快捷键,通过浏览器菜单粘贴,右键菜单粘贴等,Ctrl+V事件能处理,但后两者用JS好像没方法控制。
|
回复 |
作者: jason, 发布日期: 2010-05-07 12:05:17 |
Roddy大哥终于回复了!
我的js水平实在有限。 刚刚尝试在“KE.create”里对iframeDoc添加事件: KE.event.add(iframeDoc, 'paste', function(){ alert(1); return false; }); 这样是可以捕获到粘贴事件的,alert(1);可以弹出,但是这个return false是无法生效的。 不知道如何删除或者说修改iframeDoc原来的粘贴事件,让它原来的onpaste返回false? 编辑器的iframe及里面的html、body,都是用js动态插入的,我使用 iframeDoc.onpaste = function(){alert(2);return false;}; 是不行的,而且这个alert(2);也是弹不出来的。 |
回复 |
作者: jason, 发布日期: 2010-05-07 14:38:28 |
找到了一种解决办法,效果是当用户粘贴时,自动弹出“粘贴无格式文本”窗口,代码:
KE.show({ id : 'txt', afterCreate : function(){ cantPaste(this.id); } }); function cantPaste(id){ KE.event.add(KE.g[id].iframeDoc.body, 'paste', function(e) { KE.plugin['plainpaste'].click(id); if(e.preventDefault) e.preventDefault(); return false; }); } cantPaste函数给指定的编辑器内部的body加上paste事件,并且在弹出“粘贴无格式文本”窗口后,停止这个事件后面要做的事。 但是,在执行下面代码后事件就没了:(解决办法是再次调用cantPaste从新添加事件) KE.clearEditor = function(id) { KE.g[id].iframeDoc.open(); KE.g[id].iframeDoc.write(KE.util.getFullHtml(id)); KE.g[id].iframeDoc.close(); KE.g[id].newTextarea.value = ''; } 但是目前还有个小问题: 如何在弹出“粘贴无格式文本”窗口后,让窗口中的textArea获取焦点。 |
回复 |
作者: Roddy, 发布日期: 2010-05-13 21:12:10 |
刚测试了一下,Firefox、Chrome最新版都支持onpaste事件,Oprera还不支持,看来非IE浏览器和IE的差别越来越小。
|
回复 |