首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >JavaScript粘贴事件在Chrome中工作正常,但在Firefox中不能正常工作

JavaScript粘贴事件在Chrome中工作正常,但在Firefox中不能正常工作
EN

Stack Overflow用户
提问于 2014-09-29 17:44:24
回答 1查看 3.9K关注 0票数 5

我最初的目标是从剪贴板上粘贴一张图片。但是我在粘贴事件上遇到了麻烦。

在我重现问题的JSFiddle中,HTML只包含一个div:

代码语言:javascript
运行
复制
<div style="width: 200px; height: 200px; background: grey" id="pasteTarget" > </div>

JavaScript首先将我的函数handlePaste()绑定到paste事件。

代码语言:javascript
运行
复制
window.onload = function() {
    //adding paste event listener on the div
    document.getElementById("pasteTarget").
        addEventListener("paste", handlePaste);
};

此函数应在用户按下Ctrl+V或在浏览器菜单中选择"paste“时调用。

代码语言:javascript
运行
复制
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.clipboardData以获取剪贴板的内容。例如,如果按PrtScrn键,然后按Ctrl+V,则会向handlePaste方法发送一个打印屏幕图像。最后一个警报在工作正常时显示"image/png“。

Chrome v37: JsFiddle运行良好。Firefox v32:未调用handlePaste()方法,未弹出第一个警报。

jsFiddle代码:http://jsfiddle.net/demeylau/ke44bufm/1/

EN

回答 1

Stack Overflow用户

发布于 2014-10-07 16:32:13

据我所知,您必须为每个浏览器代理单独处理粘贴。Joshua Gross在本文中介绍了paste事件的许多错综复杂的内容:Paste Wasteland

Firefox喜欢更迟钝,但通过将剪贴板数据视为Blob,可以将图像数据作为文件读取。(参见Gross文章中的postscript )这是浏览器中未解决的遗留代码,以略有不同的方式处理操作系统事件,并简洁地总结了为什么我们在WebAPI等东西中标准化了大多数新功能。我希望这能帮到你。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26096920

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档