我希望创建一个“轻松粘贴体验”,用户可以在页面的任何位置按ctrl-v将其剪贴板数据粘贴到textarea中。我希望他们能够将文本粘贴到textarea中,而不会将textarea聚焦。
我知道我可以使用此代码来检测粘贴事件:
$('html').bind('paste', function(e) {
});
但我不知道如何抓取剪贴板数据并将其“移动”到textarea,或者甚至可能(访问用户剪贴板的限制)。
答案 0 :(得分:3)
在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);
}
});
答案 1 :(得分:0)
无法从JavaScript(或Flash)访问复制缓冲区,但有一个名为ZeroClipboard的Flash项目可以将文本添加到无法读回的复制缓冲区中。 / p>
答案 2 :(得分:0)
可以在firefox中执行您正在尝试的操作,捕获Ctrl-V并将其重定向到textarea / text输入。
然而,由于其他海报所说,由于安全性而在firefox中监听onpaste事件,你无法做到这一点,但是可以通过监听keydown事件并捕获Ctrl + V来实现。
在所有浏览器中,一般情况下您无法直接访问剪贴板(可以使用闪存进行设置,或者我认为在某些版本的Internet Explorer中可能已经可以使用闪存)。
您可以在窗口上侦听keydown事件,并检查是否按下Ctrl + V.
然后你可以集中输入/ textarea,不要取消事件的传播,firefox会乐意将文本粘贴到你想去的地方。
然后,您可以收听输入的onpaste或onchange事件以进一步处理文本。
HTML:
<textarea id='redirect_ta'></textarea>
JS:
$(window).keydown(function(event) {
if(event.ctrlKey && event.keyCode == 0x56) {
$('#redirect_ta').focus();
}
});
这是一个JSFiddle,说明了这一点:
适用于Firefox,Chrome和Internet Explorer。