Запуск события нажатия клавиши с помощью прослушивателя событий БЕЗ jquery - PullRequest
1 голос
/ 17 июня 2020

Я хочу вызвать событие нажатия клавиши как реакцию на прослушиватель событий без использования jQuery

let arrow = document.querySelector("#arrow");
//When you click on the arrow
arrow.addEventListener('click', function(e){
// It triggers a keypress (down)
  	$(document).trigger(keypressing);
  });

[РЕДАКТИРОВАТЬ] Я пробовал это, но, похоже, не запускает имитацию нажатия клавиш:

let arrow = document.querySelector(".scroll-down");


arrow.addEventListener('click', function(e){
console.log('simulating the keypress of down arrow')
document.dispatchEvent(new KeyboardEvent('keypress', {'key': 'x'}));
});


$(window).bind('keypress', function(event) {
	if (event.key == 'x') { 
	console.log('its working with x')
}
});

1 Ответ

2 голосов
/ 17 июня 2020

Вы можете использовать dispatchEvent для запуска события.
Пример: триггер keypress с ключом x

document.dispatchEvent(new KeyboardEvent('keypress', {'key': 'x'}));

docs


Это сработало для меня, чтобы вызвать событие нажатия клавиши:

// Create listener 
document.addEventListener('keydown', () => { console.log('test')})

// Create event
const keyboardEvent = document.createEvent('KeyboardEvent');
const initMethod = typeof keyboardEvent.initKeyboardEvent !== 'undefined' ? 'initKeyboardEvent' : 'initKeyEvent';

keyboardEvent[initMethod](
  'keydown', // event type: keydown, keyup, keypress
  true,      // bubbles
  true,      // cancelable
  window,    // view: should be window
  false,     // ctrlKey
  false,     // altKey
  false,     // shiftKey
  false,     // metaKey
  40,        // keyCode: unsigned long - the virtual key code, else 0
  0          // charCode: unsigned long - the Unicode character associated with the depressed key, else 0
);

// Fire event
document.dispatchEvent(keyboardEvent);
...