Заставить javascript интерпретатор выдавать ошибку если в addEventListener неверное имя события

Есть возможность в javascript интерпретаторе выдавать ошибку если в addEventListener неверное имя события?

Например пишем:

document.addEventListener('onkeydown', function (e) {…}); 

При выполнении данной строки ничего не происходит. Ни ошибки, ни присвоения обработчика событий.

Это понятно что в данном конкретном случае место 'onkeydown' надо писать 'keydown'. Но в других случаях ты можешь этого не заметить. А javascript run-time молчит, как будто все нормально. Тестировал в хроме. Может есть какие-то специальные javascript машины, которые более строго подходят к данным ошибкам?


Ответы (2 шт):

Автор решения: Nikolai

Если нужна такая проверка на стандартные обработчики событий и вы знаете какие обработчики вам нужны в проекте, напишите функцию которая принимает событие в аргументе и возвращает его если с проверкой всё ОК., иначе выбрасывайте ошибку. Вызывайте эту функцию в обработчиках.

→ Ссылка
Автор решения: SwaD

Метод 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 может быть передана любая произвольная строка

→ Ссылка