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

Vin*_*ier 7 javascript jquery paste

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

jQuery(document).on('paste', function() {alert('text pasted!')})
Run Code Online (Sandbox Code Playgroud)

它适用于Chrome(v37).但它不适用于Firefox(v32)和IE(v11),因为你可以试试这个jsfiddle:

http://jsfiddle.net/7N6Xq/410/

知道我做错了什么吗?

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

我不能仅仅依赖于密钥检测,因为我需要只能通过粘贴事件获得的剪贴板内容(没有其他方法可以访问它).在这个JSFiddle中,我得到了事件并显示了文本(仅适用于Chrome)

http://jsfiddle.net/7N6Xq/412/

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

Tod*_*ark 6

这是我的JSFIDDLE.它在Chrom&Firefox和IE10上运行良好以下是代码:

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


Mar*_*eed 2

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

请参阅此处的小提琴:http://jsfiddle.net/Lznvm8x9/

我使用的是 Mac,所以无法测试 IE,但上述内容适用于 Firefox、Safari 和 Opera。

如果您想将 control-V 检测为独立于实际粘贴功能的关键和弦,您可以使用keydown/ keyupevents,但随后您会遇到跨平台问题 - 您是否希望它在 Mac 上仍然是 control-V,其中粘贴通常是命令-V等。