作者:天河体育场里的执波仔_287 | 来源:互联网 | 2023-09-03 20:34
我需要能够允许用户粘贴到可编辑的div(通过用户选择的任何东西:右键单击并粘贴,快捷键等),但我想丢弃格式并只采用纯文本.我不能使用textarea,因为如果由用户启动的事件应用,
我需要能够允许用户粘贴到可编辑的div(通过用户选择的任何东西:右键单击并粘贴,快捷键等),但我想丢弃格式并只采用纯文本.
我不能使用textarea,因为如果由用户启动的事件应用,div将允许基本格式(粗体和斜体).
onbeforepaste事件看起来很有希望,但根据quirksmode,支持是如此有限,以至于无法使用.
tyia任何建议
解决方法:
这很棘手,但并非不可能.您可以做的是非常复杂,并且可以在Firefox 2,IE 5.5和最近的WebKit浏览器(如Safari 4或Chrome)(旧版本未经测试)中使用. TinyMCE和CKEditor的最新版本在基于iframe的编辑器上使用此技术:
>使用按键事件处理程序检测ctrl-v / shift-ins事件
>在该处理程序中,保存当前用户选择,在屏幕外添加textarea元素(比如左边-1000px),关闭contentEditable并在textarea上调用focus(),从而移动插入符并有效地重定向粘贴
>在事件处理程序中设置一个非常简短的计时器(比如说1毫秒),调用另一个存储textarea值的函数,从文档中删除textarea,重新打开contentEditable,恢复用户选择并粘贴文本.
请注意,这仅适用于键盘粘贴事件,而不适用于上下文或编辑菜单中的粘贴.粘贴事件会更好,但是当它触发时,将插入符重定向到textarea(至少在某些浏览器中)为时已晚.