Javascript 如何在没有contentEditable的情况下在“div”上添加键盘事件
我想在Javascript 如何在没有contentEditable的情况下在“div”上添加键盘事件,javascript,jquery,html,Javascript,Jquery,Html,我想在divdom上收听ctrl+ckey事件。我知道我可以通过将其contentEditable设置为true(参见下面的代码),在dom上添加keypress事件。但它将使div可编辑。我想要的是在ctrl+c事件上侦听,而不是使div可编辑。我有办法做到这一点吗 $('.mydiv').attr('contentEditable', true); $('.mydiv').focus(); $('.mydiv').bind('keypress', handler); 你可以试试这个。 在当
div
dom上收听ctrl+c
key事件。我知道我可以通过将其contentEditable
设置为true(参见下面的代码),在dom上添加keypress
事件。但它将使div可编辑。我想要的是在ctrl+c
事件上侦听,而不是使div可编辑。我有办法做到这一点吗
$('.mydiv').attr('contentEditable', true);
$('.mydiv').focus();
$('.mydiv').bind('keypress', handler);
你可以试试这个。
在当前页面上的调试器中运行此命令:
document.querySelector('.post-taglist').oncopy = _ => alert('CCCCCCC')
它应该使整个div(在屏幕截图上用黄色标记)侦听复制事件(CTRL+C)。现在,您可以单击div上的任意位置(例如,屏幕截图上标记了红色圆圈),而不是CTRL+C,如果您将tabindex=“0”
添加到
中,您应该会收到警报“cccccccc”,它将能够在不使用内容可编辑的情况下获得:focus
。然后,您可以按如下方式列出ctrl+c
:
var ctrlDown = false,
ctrlKey = 17,
cKey = 67;
$(document).keydown(function(e){
if($('div').is(":focus")){
if (e.keyCode == ctrlKey) ctrlDown = true;
if (ctrlDown && e.keyCode == cKey){
alert('dave');
ctrlDown = false;
}
}
})
查看此项以查看其工作情况。当您按下ctrl+c
时,
是否会有:focus
?不可编辑的元素不能有此事件。您可以只收听整个文档,并查看在按下ctrl+c
时选择了什么。请阅读:contentEditable
将使div可编辑,这是我不想要的。不要添加contentEditable