Web应用程序如何检测粘贴事件并检索要粘贴的数据?
我想在将文本粘贴到富文本编辑器之前删除HTML内容.
之后粘贴后清理文本有效,但问题是所有以前的格式都丢失了.例如,我可以在编辑器中编写一个句子并将其设为粗体,但是当我粘贴新文本时,所有格式都会丢失.我想只清理粘贴的文本,并保持以前的格式不变.
理想情况下,该解决方案应适用于所有现代浏览器(例如,MSIE,Gecko,Chrome和Safari).
请注意,MSIE有clipboardData.getData(),但我找不到其他浏览器的类似功能.
我注意到Google发布的一篇博客文章提到,如果您使用的是最新版本的Chrome,则可以直接将剪贴板中的图片粘贴到Gmail邮件中.我尝试使用我的Chrome版本(12.0.742.91 beta-m),使用控制键或上下文菜单效果很好.
从这种行为我需要假设Chrome中使用的最新版本的webkit能够处理Javascript粘贴事件中的图像,但我无法找到任何对此类增强的引用.我相信ZeroClipboard绑定到按键事件以触发其闪存功能,因此无法通过上下文菜单工作(同样,ZeroClipboard是跨浏览器,帖子说这只适用于Chrome).
那么,这是如何工作的以及对启用该功能的Webkit(或Chrome)进行增强的地方?
我正在使用一个明确的跨浏览器解决方案,当contentEditable ='on'<div>重新获得焦点时,将光标/插入位置设置为最后的已知位置.看来内容可编辑div的默认功能是每次单击它时将插入符/光标移动到div中文本的开头,这是不合需要的.
我相信当他们离开div的焦点时我必须在变量中存储当前光标位置,然后当他们再次聚焦时重新设置它,但是我无法将它组合在一起,或者找不到工作代码示例.
如果有人有任何想法,工作代码片段或样本我很乐意看到它们.
我还没有任何代码,但这里有我所拥有的:
<script type="text/javascript">
// jQuery
$(document).ready(function() {
$('#area').focus(function() { .. } // focus I would imagine I need.
}
</script>
<div id="area" contentEditable="true"></div>
Run Code Online (Sandbox Code Playgroud)
PS.我已经尝试过这个资源,但它似乎不适用于<div>.也许只适用于textarea(如何将光标移动到可信实体的末尾)
重要的部分是截取屏幕截图
我在 stackoverflow 上遇到了几个解决这个问题的问题(见上文),但没有找到满足这两个条件的任何答案。我没有尝试为要求略有不同的现有问题添加部分答案,而是在一个单独的问题中提出这个问题。
到目前为止,我已经找到了一个很好的解释,说明如何video使用Screen Capture API从任何窗口获取像素并将其流式传输到元素中。但是,我错过了下一步,将视频元素中显示的像素转换为可以上传到服务器的jpg或png文件。