我试图检测用户何时在JavaScript中按下Ctrl + V.
jQuery(document).on('paste', function() {alert('text pasted!')})
适用于Chrome(v37)。但它不适用于Firefox(v32)和IE(v11),因为你可以试试这个jsfiddle:
http://jsfiddle.net/7N6Xq/410/
知道我做错了吗?
EDIT - 2014-09-17 - 需要剪贴板内容。
我不能仅仅依赖于密钥检测,因为我需要只能通过粘贴事件获得的剪贴板内容(没有其他方法可以访问它)。在这个JSFiddle中,我得到了事件并显示了文本(仅适用于Chrome)
http://jsfiddle.net/7N6Xq/412/
我的最终目标是从剪贴板中获取图像并直接将其发送到服务器。
答案 0 :(得分:6)
这是我的JSFIDDLE。它适用于Chrome& Firefox& IE10 这是代码:
$(document).keydown(function (event) {
if (event.ctrlKey && event.keyCode == 86) {
alert("!");
}
});
答案 1 :(得分:2)
您无法粘贴显示的文字。您必须创建一个可以粘贴的输入区域,<input>
或<textarea>
或类似名称。它将继承onpaste
处理程序,因此您不必直接在输入元素上设置它,但在大多数浏览器中它不会在一个处理器之外触发。
请参阅此处的小提琴:http://jsfiddle.net/Lznvm8x9/
我在Mac上,所以我无法测试IE,但上述功能适用于Firefox,以及Safari和Opera。
如果您想将control-V检测为与实际粘贴功能无关的关键和弦,您可以使用keydown
/ keyup
个事件,但是您会遇到跨平台问题 - 是吗?希望它仍然是Mac上的control-V,其中粘贴通常是命令-V等。
答案 2 :(得分:2)
使用keydown
和keyup
+代码代替实际方法。