Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/411.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粘贴事件在Chrome中运行良好,但在Firefox中不起作用_Javascript_Google Chrome_Firefox_Paste - Fatal编程技术网

JavaScript粘贴事件在Chrome中运行良好,但在Firefox中不起作用

JavaScript粘贴事件在Chrome中运行良好,但在Firefox中不起作用,javascript,google-chrome,firefox,paste,Javascript,Google Chrome,Firefox,Paste,我最初的目标是从剪贴板粘贴一幅图像。但是我很难得到粘贴事件 window.onload = function() { //adding paste event listener on the div document.getElementById("pasteTarget"). addEventListener("paste", handlePaste); }; 在我重现问题的JSFIDLE中,HTML只包含一个div: <div style="width

我最初的目标是从剪贴板粘贴一幅图像。但是我很难得到粘贴事件

window.onload = function() {
    //adding paste event listener on the div
    document.getElementById("pasteTarget").
        addEventListener("paste", handlePaste);
};
在我重现问题的JSFIDLE中,HTML只包含一个div:

<div style="width: 200px; height: 200px; background: grey" id="pasteTarget" > </div>
当用户按下Ctrl+V或在浏览器菜单中选择“粘贴”时,应该调用此函数

function handlePaste(e) {
    alert("I'm in handlePaste");    
    for (var i = 0 ; i < e.clipboardData.items.length ; i++) {
         var item = e.clipboardData.items[i];
         console.log("Item: " + item.type);
         alert(item.type);
     }   
}
功能手柄固定(e){
警惕(“我在手上”);
对于(var i=0;i
重要提示:该函数访问e.clipboardData以获取剪贴板的内容。例如,如果按PrtScrn键,然后按Ctrl+V,则会向handlePaste方法发送打印屏幕图像。 最后一个警报在正常工作时显示“image/png”

ChromeV37:JSFIDLE运行良好。 Firefox v32:未调用handlePaste()方法,不会弹出第一个警报


jsFiddle代码:

据我所知,您必须按照浏览器代理分别处理粘贴。 Joshua Gross在本文中介绍了粘贴事件的许多复杂之处:

Firefox喜欢变得更加迟钝,但通过将剪贴板数据视为Blob,可以将图像数据作为文件读取。(见格罗斯文章的后记) 这是浏览器中以稍微不同的方式处理操作系统事件的几乎未打包的遗留代码,简洁地总结了为什么我们在WebAPI等方面有标准化的最新功能。
我希望这会有所帮助。

我怀疑您是否可以将任何内容粘贴到不可编辑的文件中element@Ovi-它会在Chrome中工作吗,因为Chrome中有一种bug?关于这一点也有一个提示。但问题仍未解决,上一次更新是在2014年。