我注意到一个blog post from Google,它提到如果你使用的是最新版本的Chrome,可以直接从剪贴板粘贴图像到Gmail邮件中。我用我的Chrome版本(12.0.742.91 beta-m)尝试了这个方法,使用控制键或上下文菜单效果很好。
从这种行为中,我需要假设Chrome中使用的最新版本的webkit能够处理JavaScript粘贴事件中的图像,但我无法找到任何对这种增强的引用。我相信ZeroClipboard绑定到按键事件来触发其flash功能,因此不会通过上下文菜单工作(此外,ZeroClipboard是跨浏览器的,帖子说这只适用于Chrome)。
那么,这是如何工作的,以及在哪里对Webkit(或Chrome)进行了增强以实现该功能?
4条答案
按热度按时间pokxtpni1#
我花了一些时间来做这个实验。它似乎遵循了新的Clipboard API spec。您可以定义一个“paste”事件处理程序,查看event.clipboardData.items,并在其上调用getAsFile()以获取一个Blob。一旦你有了一个Blob,你可以在它上面使用FileReader来查看它里面有什么。这是你如何获得你刚刚粘贴在Chrome中的内容的数据URL:
字符串
一旦你有了一个数据URL,你就可以在页面上显示图像了。如果你想上传它,你可以使用readAsBinaryString,或者你可以使用FormData将它放入一个XHR。
编辑:请注意,该项的类型为DataTransferItem。
JSON.stringify
可能不能在items列表上工作,但是当你在items上循环时,你应该能够得到mime类型。hujrc8aj2#
尼克的答案似乎需要小的改变才能仍然起作用:)
字符串
示例运行代码:http://jsfiddle.net/bt7BU/225/
所以尼克回答的变化是:
型
至
型
此外,我还必须从粘贴的项目中获取第二个元素(如果您将另一个网页中的图像复制到缓冲区中,则第一个元素似乎是text/html)。所以我改变了
型
循环查找包含图像的项(见上文)
我不知道如何直接回答尼克的答案,希望在这里很好:$:)
xmd2e60i3#
据我所知-
有了HTML5的特性(文件API和相关的)-现在可以用普通的JavaScript访问剪贴板图像数据。
但是,这在IE上不起作用(低于IE 10的任何内容)。我也不太了解IE10的支持。
对于IE,我认为最好的选择是使用Adobe的AIR API或者使用一个签名的applet
fnatzsnv4#
字符串
粘贴这个并保存为.html,你就可以开始了