2

我正在寻找一种“简单的粘贴体验”,用户可以在页面上的任意位置点击 ctrl-v 将他们的剪贴板数据粘贴到 textarea 中。我希望他们能够将文本粘贴到 textarea 而不使 textarea 成为焦点。

我知道我可以使用此代码来检测粘贴事件:

$('html').bind('paste', function(e) {

});

但我不知道如何获取剪贴板数据并将其“移动”到文本区域,或者这是否可能(访问用户剪贴板的限制是什么)。

4

3 回答 3

4

这在 Firefox 中是不可能的。在 IE、Safari 和 Chrome 中,您可以执行以下操作:

$('html').bind('paste', function(e) {
    e.preventDefault();
    if(e.originalEvent.clipboardData){
       var text = e.originalEvent.clipboardData.getData("text/plain");
       alert(text);
     }
});
于 2013-01-03T03:47:33.843 回答
0

无法从JavaScript(或 Flash,尽管有一个名为ZeroClipboard的 Flash 项目可以将文本添加到无法读取的复制缓冲区)访问复制缓冲区。

于 2013-01-03T01:05:55.180 回答
0

可以在 Firefox 中执行您正在尝试的操作,捕获 Ctrl-V 并将其重定向到 textarea / 文本输入。

但是,由于安全原因,您不能通过在 Firefox 中收听 onpaste 事件来做到这一点,正如另一位海报所说,但可以通过收听 keydown 事件并捕获 Ctrl+V 来实现。

在所有浏览器中,通常您无法直接访问剪贴板(可以使用 Flash 进行设置,或者我认为在某些版本的 Internet Explorer 中可能已经可以)。

您可以在窗口上监听 keydown 事件并检查是否按下了 Ctrl+V。

然后你可以集中输入/文本区域,不要取消事件的传播,firefox会很高兴地将文本粘贴到你想要它去的地方。

然后,您可以收听输入的 onpaste 或 onchange 事件以进一步处理文本。

HTML:

<textarea id='redirect_ta'></textarea>

JS:

$(window).keydown(function(event) {
    if(event.ctrlKey && event.keyCode == 0x56) {
        $('#redirect_ta').focus();
    }
});

这是一个说明这一点的 JSFiddle:

http://jsfiddle.net/DK536/2/

适用于 Firefox、Chrome 和 Internet Explorer。

于 2014-06-03T11:46:11.700 回答