Javascript 在contenteditable中检测粘贴事件
给定一个内容可编辑分区。如何检测粘贴事件,防止插入粘贴,以便截取并清理粘贴,使其仅包含文本Javascript 在contenteditable中检测粘贴事件,javascript,jquery,html,contenteditable,Javascript,Jquery,Html,Contenteditable,给定一个内容可编辑分区。如何检测粘贴事件,防止插入粘贴,以便截取并清理粘贴,使其仅包含文本 我也不想在粘贴+消毒完成后失去焦点。更新: 现在,所有主要浏览器都允许您在粘贴事件中访问剪贴板数据。有关较新浏览器的示例,请参见,如果需要支持较旧的浏览器,请查看 您可以侦听div上的事件以检测粘贴。如果只想禁用粘贴,可以从该侦听器调用event.preventDefault() 但是,捕获粘贴的内容有点困难,因为onPaste事件不允许您访问粘贴的内容。处理此问题的常用方法是从onPaste事件处理程
我也不想在粘贴+消毒完成后失去焦点。更新: 现在,所有主要浏览器都允许您在粘贴事件中访问剪贴板数据。有关较新浏览器的示例,请参见,如果需要支持较旧的浏览器,请查看
您可以侦听div上的事件以检测粘贴。如果只想禁用粘贴,可以从该侦听器调用
event.preventDefault()
但是,捕获粘贴的内容有点困难,因为onPaste
事件不允许您访问粘贴的内容。处理此问题的常用方法是从onPaste
事件处理程序执行以下操作:
- 创建一个虚拟div,并将其放置在窗口边界之外,以便访问者看不到它
- 将焦点移到此div
- 使用
setTimeout(sanitize,0)
- 找到虚拟div并获取其内容
- 清理HTML并删除div
- 将焦点移回原始div
- 在原始div中插入经过消毒的内容
粘贴”
事件在某些浏览器中进行这种重定向为时已晚,但总体思路是可行的。下面是另一个经过跨浏览器测试的非常受欢迎的解决方案