Заставить javascript интерпретатор выдавать ошибку если в addEventListener неверное имя события
Есть возможность в javascript интерпретаторе выдавать ошибку если в addEventListener неверное имя события?
Например пишем:
document.addEventListener('onkeydown', function (e) {…});
При выполнении данной строки ничего не происходит. Ни ошибки, ни присвоения обработчика событий.
Это понятно что в данном конкретном случае место 'onkeydown' надо писать 'keydown'. Но в других случаях ты можешь этого не заметить. А javascript run-time молчит, как будто все нормально. Тестировал в хроме. Может есть какие-то специальные javascript машины, которые более строго подходят к данным ошибкам?
Ответы (2 шт):
Если нужна такая проверка на стандартные обработчики событий и вы знаете какие обработчики вам нужны в проекте, напишите функцию которая принимает событие в аргументе и возвращает его если с проверкой всё ОК., иначе выбрасывайте ошибку. Вызывайте эту функцию в обработчиках.
Метод addEventListener первым параметром принимает значение - строка. Любая строка. Есть предопределенные типы событий в типе DocumentEventMap
Допустим, у нас есть Бяка, которая хочет послать сообщение для Буки, и сообщение это не должно зависеть от действий пользователя на странице
Вот наша Бяка
<div id="byaka">Жду буку</div>
А вот так мы можем передать сообщение Буке из любого места и по любому событию
document.addEventListener('buka', function (e) { //Вешаем слушателя
console.log('buka получил сообщение');
});
let event = new Event('buka', {bubbles: true}); // Генерим событие
const byaka = document.getElementById('byaka'); // Берем элемент
byaka.dispatchEvent(event); // Кричим во весь document что сработало событие. Все кто подписан на событие 'buka' получат его
Таким образом, мы можем создавать свои события и подписывать на них любые элементы.
И так же отвечая на вопрос - как защитится от опечатки в имени события: Быть внимательным ) Не уверен, что даже TypeScript спасет, с учетом того, в addEventListener может быть передана любая произвольная строка
