Имитация события клавиатуры с помощью Firefox - PullRequest
0 голосов
/ 30 октября 2019

Я пытаюсь выполнить событие клавиатуры cntl-b в Firefox, чтобы убрать боковую панель. Код, который я использую

function assignOnclick()
{
var evt = document.createEvent("KeyboardEvent");
evt.initKeyboardEvent("keydown", true, true, window,
true, false, false, false,
"b", 0);
document.dispatchEvent(evt);

Функция assignOnclick вызывается другой функцией, которая выполняется через onload в операторе body. Я изменил код, чтобы проверить логическое возвращаемое значение, которое является истинным. Судя по всему, Firefox либо игнорирует это, либо я делаю это неправильно. Кстати, ввод cntl-b на клавиатуре удаляет боковую панель. Любая помощь приветствуется.

1 Ответ

0 голосов
/ 05 ноября 2019

document.addEventListener('keydown', function(e) {
    console.log(  'keydown:' + (e.code ? e.code : e.key));
   
});

document.addEventListener('keyup', function(e) {
    console.log(  'keyup:' + (e.code ? e.code : e.key));
});

document.addEventListener('keypress', function(e) {
     console.log(  'keypress:' +  (e.code ? e.code : e.key) );
});
var e = new KeyboardEvent("keydown", {bubbles : true, cancelable : true, key : "Control", code : "ControlLeft", ctrlKey : true});
document.dispatchEvent(e);
 e = new KeyboardEvent("keydown", {bubbles : true, cancelable : true, key : "B", char : "B", ctrlKey : true});
document.dispatchEvent(e);
 e = new KeyboardEvent("keypress", {bubbles : true, cancelable : true, code : "KeyB", ctrlKey : true});
document.dispatchEvent(e);
 e = new KeyboardEvent("keyup", {bubbles : true, cancelable : true, key : "B", char : "B", ctrlKey : true});
document.dispatchEvent(e);
 e = new KeyboardEvent("keyup", {bubbles : true, cancelable : true, key : "Control", code : "ControlLeft", ctrlKey : true});
document.dispatchEvent(e);

, если это не работает, метод dispatchEvent может быть заблокирован. Посмотрите на это , если оно не работает

...