#javascript #event-handling #internationalization
#javascript #обработка событий #интернационализация
Вопрос:
Мне нужно, чтобы действие выполнялось, когда пользователь вводит точку с запятой. В настоящее время мы имеем
if (event.key == 'Semicolon')
который работает на англоязычной клавиатуре. Проблема возникает, когда мы пробуем это на испаноязычной клавиатуре, где для ввода точки с запятой пользователь нажимает shift запятая. Поскольку на самом деле нажимается клавиша запятой, значение event .ключ — это ‘Запятая’, которая запускает гаечный ключ в работу. Существует ли зависящий от языка способ прослушивания точки с запятой (т. Е. выбор как клавиши с запятой на английской клавиатуре, так и shift comma на испанской)?
Комментарии:
1. Я не уверен на 100%, поскольку коды клавиш немного запутаны, но события
keydown
иkeyup
запускаются при нажатии физической клавиши на клавиатуре, в то время какkeypress
событие (идущее сразу послеkeydown
) привязано к символу , связанному с этой клавишей, который может измениться при сочетании с другими. Тем не менее, использованиеkeypress
события, связанного с кодом ключа с запятой (может быть, 186 или 187?), должно сработать2. Оказывается, я получал событие. перепутаны ключ и event.keyCode. событие. ключ оказался тем, что мне было нужно.
Ответ №1:
Существует beforeinput
событие, которое будет инициировано самой точкой с запятой:
window.addEventListener('beforeinput', (e) => {
alert(e.data); // ;
});