Как добавить событие клавиатуры на `div` без contentEditable

Я хочу послушать ctrl + cключевое событие на divdom. Я знаю, что могу добавить keypressсобытие на dom, установив его contentEditableв true (см. Ниже код). Но это сделает div редактируемым. Я хочу, чтобы прослушивание на ctrl + cсобытии не делало div редактируемым. Есть ли способ сделать это?

$('.mydiv').attr('contentEditable', true);
$('.mydiv').focus();
$('.mydiv').bind('keypress', handler);

javascript,jquery,html,

0

Ответов: 2


1 принят

Вы можете попробовать это. Запустите это в своем отладчике на этой текущей странице:

document.querySelector('.post-taglist').oncopy = _ => alert('CCCCCCC')

введите описание изображения здесь

он должен сделать весь div (отмеченный на скриншоте желтым цветом) слушать событие копирования (tabindex = "0"). Теперь вы можете щелкнуть в любом месте div (например, где красный скриншот отмечен на скриншоте), чем CTRL + C, и вы должны получить предупреждение 'CCCCCCC'


0

Если вы добавите <div>к :focusнему, он сможет получить contentEditableбез использования ctrl + c. Затем вы можете перечислить 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;
    }
  }
})

Посмотрите эту скрипку, чтобы увидеть, как она работает.

JavaScript, JQuery, HTML,
Похожие вопросы