#javascript #events #dom-events #keyboard-events
#javascript #Мероприятия #dom-события #клавиатура-события
Вопрос:
Согласно MDN Web Docs KeyboardEvent и обновлениям Google KeyboardEvent ключ и код реализованы во время keyCode и которые устарели.
Имея это в виду, я должен иметь возможность отправлять keydown
событие, как показано ниже:
document.dispatchEvent(
new KeyboardEvent("keydown", {
key: 'K',
code: 'KeyK',
shiftKey: false,
ctrlKey: false,
metaKey: false
})
);
К сожалению, это не работает, хотя, если я добавлю keyCode дополнительно, этот скрипт работает отлично. Объект с ключевым кодом:
document.dispatchEvent(
new KeyboardEvent("keydown", {
key: 'K',
code: 'KeyK',
keyCode: 75,
shiftKey: false,
ctrlKey: false,
metaKey: false
})
);
Я что-то упускаю? keyCode и которые устарели, поэтому должна быть возможность создать рабочее событие без этих элементов. Я нигде не могу найти ответа на этот вопрос.
Я использую текущую версию Google Chrome (87). Я тестирую этот скрипт, отправляя kключ на YouTube для воспроизведения / паузы видео.
Комментарии:
1. возможно, их код ищет keyCode, а не key….
2. Отправка
keydown
события на самом деле не вызывает нажатия клавиш на клавиатуре.3. @epascarello сделайте sens. Если они добавили ключ и код некоторое время назад, я думал, что они также улучшили код youtube, поскольку keycode устарел.
4. Вам нужно будет поговорить с их разработчиками 😉 устаревшие материалы не исчезают. Это похоже на то, что кто-то говорит «Не делай этого» 🙂
Ответ №1:
Статус «устаревший» в документации говорит вам, что вы не должны полагаться на эти атрибуты, присутствующие в событиях, которые вы получаете, потому что разработчики браузера планируют прекратить включать их в события, которые они создают.
Однако в этом случае вы имитируете ту часть кода, которую обычно выполняет браузер, при создании события. Ни у вас, ни у браузера нет никакого способа узнать, что будет искать код, получающий это событие.
Если вы оставите устаревшие атрибуты, вы эмулируете будущий браузер, и сайт YouTube, на котором вы тестируете, может быть, в настоящее время не готов к работе с этим будущим браузером. Вам лучше установить все атрибуты, которые текущий браузер установил бы для этого события.
Обратите внимание, что разработчики YouTube, хотя в конечном итоге работают в той же компании, что и разработчики Chrome, вероятно, имеют очень мало связей. Они будут регулярно обновлять свой код, чтобы следовать текущим рекомендациям, как любая хорошо управляемая команда разработчиков, но это требует времени и должно быть приоритетным среди всего остального, над чем они работают.