Jquery 按键时将文本复制到剪贴板

Jquery 按键时将文本复制到剪贴板,jquery,clipboard.js,Jquery,Clipboard.js,是否可以使用此库将“复制到剪贴板”绑定到键盘快捷方式 所有这些都假设页面上有一个按钮,并等待用户按下该按钮。但我需要用键盘触发它 我的尝试甚至不会触发任何回调。我有一个触发器需要手动发出,我找不到它: jQuery(函数($){ var$placeholder=$(“div:first”); var clipboard=new ClipboardJS($placeholder[0]); $(“textarea”)。在(“键控”上,函数(事件){ var文本; 如果(event.key==“s”

是否可以使用此库将“复制到剪贴板”绑定到键盘快捷方式

所有这些都假设页面上有一个按钮,并等待用户按下该按钮。但我需要用键盘触发它

我的尝试甚至不会触发任何回调。我有一个触发器需要手动发出,我找不到它:

jQuery(函数($){
var$placeholder=$(“div:first”);
var clipboard=new ClipboardJS($placeholder[0]);
$(“textarea”)。在(“键控”上,函数(事件){
var文本;
如果(event.key==“s”){
text=“Test/”+Math.round(1000000*Math.random());
日志(“正在将“%s”复制到剪贴板…”,文本);
$placeholder.attr(“数据剪贴板文本”,文本);
剪贴板上的('success',函数(e){
console.info('Action:',e.Action);
console.info('Text:',e.Text);
console.info('Trigger:',例如Trigger);
e、 选举();
});
剪贴板.on('error',函数(e){
console.error('Action:',e.Action);
console.error('Trigger:',e.Trigger);
});
//现在呢?
}
})
});
textarea{
宽度:100%;
颜色:红色;
}
文本区域:焦点{
颜色:绿色;
}

在此处键入“s”将一些文本保存到剪贴板。然后使用Ctrl+V查看它是否有效。

我想我找到了我遗漏的要点。我基本上需要自己触发点击事件。我用更明显的东西取代了我的
占位符:

jQuery(函数($){
var$dummyButton=$(“按钮:第一”);
var clipboard=new ClipboardJS($dummyButton[0]);
剪贴板上的('success',函数(e){
console.info('Action:',e.Action);
console.info('Text:',e.Text);
console.info('Trigger:',例如Trigger);
e、 选举();
});
剪贴板.on('error',函数(e){
console.error('Action:',e.Action);
console.error('Trigger:',e.Trigger);
});
$(“textarea”)。在(“键控”上,函数(事件){
var文本;
如果(event.key==“s”){
text=“Test/”+Math.round(1000000*Math.random());
日志(“正在将“%s”复制到剪贴板…”,文本);
$dummyButton.attr(“数据剪贴板文本”,文本);
$dummyButton.trigger(“单击”);
}
})
});
textarea{
宽度:100%;
颜色:红色;
}
文本区域:焦点{
颜色:绿色;
}
钮扣{
显示:无;
}

在此处键入“s”将一些文本保存到剪贴板。然后使用Ctrl+V查看它是否有效。

虚拟按钮
不带jQuery的解决方案:

/**通过模拟按钮单击将字符串直接复制到剪贴板*/
const copy=s=>{
const dummyButton=document.createElement('按钮')
const clipboard=new ClipboardJS(dummyButton,{text:()=>s})
Dummy按钮。单击()
}
//按键复制
window.addEventListener('keydown',e=>{
如果(e.key=='s'){
复制(‘你好,宇宙’)
}
})

浏览器焦点将移动到虚拟按钮元素,因此您可能需要在之后使用
el.focus()

恢复焦点。您基本上需要在主体上绑定一个keydown/keydup,并使用jQuery收听它。尝试使用body而不是textarea。我的实际代码是
$(document)。在(“keyup”)
上而不是
$(“textarea”)。在(“keyup”)
上。切换到
“body”
似乎不会改变任何事情。问题是,我不知道如何告诉
ClipboardJS
触发键盘复制事件,因为它显然需要点击。可能还需要聚焦身体,因为它在输入后没有聚焦。如果我没有正确解释我自己,很抱歉。请看问题中的可运行代码段。我只有
newclipboardjs($placeholder[0])
,因为构造函数需要一个元素,但是
$placeholder[0]
在这里是完全不相关的。我可以告诉他:“用户需要数据,请现在就做你的事情吗?”只是说body对我来说很好。感谢这一点,我在找到这个解决方案之前没有费吹灰之力,这个解决方案也适用于香草Javascript,只需将它包含在生活中,并相应地重新调整命名。ClipboardJS网站上没有任何内容表明支持键盘事件,也没有任何内容表明不支持键盘事件。