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