Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在contenteditable中检测粘贴事件_Javascript_Jquery_Html_Contenteditable - Fatal编程技术网

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中插入经过消毒的内容

有用的方法是在粘贴事件发生之前捕获粘贴事件,对其进行清理,然后将安全内容注入可编辑内容,而不丢失光标位置。Ideas?IE、Safari和Chrome允许访问剪贴板中的数据,但Firefox的解决方案让你头疼不已。如果可行的话,更简单的方法是只允许粘贴,然后在事实发生后清理整个元素的内容。这行得通吗?我以前发布过一种黑客方法:“
粘贴”
事件在某些浏览器中进行这种重定向为时已晚,但总体思路是可行的。下面是另一个经过跨浏览器测试的非常受欢迎的解决方案