【发布时间】:2014-09-29 09:44:23
【问题描述】:
我最初的目标是从剪贴板中粘贴一张图片。但是我在获取粘贴事件时遇到了麻烦。
在我重现问题的 JSFiddle 中,HTML 仅包含一个 div:
<div style="width: 200px; height: 200px; background: grey" id="pasteTarget" > </div>
JavaScript 首先将我的函数 handlePaste() 绑定到粘贴事件。
window.onload = function() {
//adding paste event listener on the div
document.getElementById("pasteTarget").
addEventListener("paste", handlePaste);
};
这个函数应该在用户按下 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.clipboardData 以获取剪贴板的内容。例如,如果您按 PrtScrn 键,然后按 Ctrl+V,则您将打印屏幕图像发送到 handlePaste 方法。 最后一个警报在正常工作时显示“image/png”。
Chrome v37:JsFiddle 工作正常。 Firefox v32:不调用handlePaste()方法,不弹出第一个警报。
jsFiddle 代码:http://jsfiddle.net/demeylau/ke44bufm/1/
【问题讨论】:
-
我怀疑您可以将任何内容粘贴到不可编辑的元素中
-
@Ovi - 因为 Chrome 中的一种错误,它会在 Chrome 中工作吗?
标签: javascript google-chrome firefox paste