2016-02-05 2 views
5

Я ищу способ имитировать нажатие на клавиатуру (как указано в названии). Я посмотрел вокруг, и я нашел в основном эти 2 SO вопросы:Имитация клавиатуры нажатием кнопки, которая не устарела?

Проблема с теми, что они оба используют KeyboardEvent.initKeyboardEvent() событие, которое в соответствии с MDN это устаревшее , Есть ли другой способ выполнить одно и то же без этой устаревшей функции?

Я хотел бы знать это, потому что создаю скрипт для YouTube с помощью расширения TamperMonkey от Chrome. Этот сценарий будет, когда [пробел] нажата, триггер K. K - кнопка воспроизведения/паузы YouTube. У меня есть [пробел] слушатель прекрасно работает на код ниже:

document.addEventListener("keydown", function(e) { 
    if(e.keyCode==32) { 
     e.preventDefault(); 
    } 
}, false); 

Кроме того, я действительно искал чистого JavaScript подхода.

+3

Возможно полезно. Из MDN: «Веб-приложения должны использовать конструктор вместо этого, если он доступен». https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/KeyboardEvent – CollinD

+1

Можете ли вы объяснить, ЧТО вы пытаетесь? Это приведет к лучшим ответам – mplungjan

+0

@mplungjan Я пытаюсь, когда пользователь выполняет определенное действие (нажмите кнопку или аналогичный), эта функция будет запущена, чтобы страница вернула определенную клавишу на клавиатуре. – Jaketr00

ответ

1

Если вы делаете это с помощью jQuery, вы создаете свое событие.

https://stackoverflow.com/a/3368599/3257830

Если вы хотите, чтобы создать событие, вы инициализации, то объект отправляет событие.

https://developer.mozilla.org/en-US/docs/Web/API/Event/Event

document.addEventListener("keypress", function(e) { 
 
    alert(e.which); 
 
}); 
 
var e = new Event("keypress"); 
 
e.which = 65; 
 
e.keyCode = 65; 
 
document.dispatchEvent(e);
<p id="r">Alerts on event</p>

+0

Может ли кто-нибудь объяснить, почему это было проголосовано? Я не защищаю ответ, просто пытаюсь учиться. – ketchupisred

+2

См. Историю изменений. Слишком низкие вероятности вероятны, когда ответ был совершенно неактуальен в вопросе –

+0

Это отлично работает, если только я не добавляю 'if (e.keyCode == 65)' внутри прослушивателя клавиатуры, это, похоже, не срабатывает. Я проверю это в своем сценарии и посмотрю, все ли работает. РЕДАКТИРОВАТЬ: Кажется, он не работает, он просто не работает, и 'event.preventDefault()' должен останавливать прокрутку страницы, когда нажимается [[пробел]], но с указанным выше сценарием это больше не мешает – Jaketr00