如何在IE和firefox的JavaScript中检测CTRL-V

如何在IE和firefox的JavaScript中检测CTRL-V,javascript,jquery,paste,Javascript,Jquery,Paste,我试图检测用户在JavaScript中何时按下Ctrl+V jQuery(document).on('paste', function() {alert('text pasted!')}) 它与Chrome(v37)配合使用效果良好。但它不适用于Firefox(v32)和IE(v11),因为您可以在这个JSFIDLE上尝试: 知道我做错了什么吗 编辑-2014-09-17-需要剪贴板内容 我不能仅仅依赖于密钥检测,因为我需要剪贴板内容,它只能通过粘贴事件(没有其他干净的方式来访问它)。在这个

我试图检测用户在JavaScript中何时按下Ctrl+V

jQuery(document).on('paste', function() {alert('text pasted!')})
它与Chrome(v37)配合使用效果良好。但它不适用于Firefox(v32)和IE(v11),因为您可以在这个JSFIDLE上尝试:

知道我做错了什么吗

编辑-2014-09-17-需要剪贴板内容

我不能仅仅依赖于密钥检测,因为我需要剪贴板内容,它只能通过粘贴事件(没有其他干净的方式来访问它)。在这个JSFIDLE中,我获取事件并显示文本(仅适用于Chrome)


我的最终目标是从剪贴板中获取图像,并直接将其发送到服务器。

您不能只粘贴到显示的文本上。您必须创建一个可粘贴的输入区域,即
或类似区域。它将继承
onpaste
处理程序,因此您不必直接在输入元素上设置它,但在大多数浏览器中,它不会在输入元素之外触发

请看这里的小提琴:

我在Mac电脑上,所以我无法测试IE,但上面的功能在Firefox以及Safari和Opera中都可以使用


如果您想将control-V检测为独立于实际粘贴功能的键和弦,您可以使用
keydown
/
keydup
事件,但随后您遇到了跨平台问题-您希望它在Mac上仍然是control-V吗,粘贴通常是command-V,等等。

使用
keydown
keydup
+代码代替您的实际方法。

这是我的建议。它在Chrom、Firefox和IE10上运行良好 以下是代码:

$(document).keydown(function (event) {
    if (event.ctrlKey && event.keyCode == 86) {
        alert("!");
    }
});

如果您只想使用一个小的库,那么您应该能够从这两个线程的组合中获得答案:(检测“Ctrl”键)和(检测组合键)效果很好。但它不会通过事件提供粘贴的内容。问题的表述应该有所不同,在警报中显示剪贴板文本。但它不会通过事件向您提供粘贴的内容。这个问题应该有不同的表述,在警告中显示剪贴板文本。@JohnRizzo Soryy,我听不懂你说的。您的意思是,事件
粘贴
和事件
按键
之间是否存在差异?是的。出于安全原因,无法从JavaScript开始读取用户的剪贴板。我们唯一能做的就是等待用户启动粘贴事件(例如使用Ctrl+V)并通过该事件访问剪贴板。