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

时间:2014-09-16 15:33:35

标签: javascript jquery paste

我试图检测用户何时在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/

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

3 个答案:

答案 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)

使用keydownkeyup +代码代替实际方法。