Требуются ли EventTargets для предоставления соответствующих свойств обработчика? - PullRequest
0 голосов
/ 30 октября 2018

Я предполагаю, что на практике хорошо понимает , что объекты, которые реализуют EventTarget, включают все свои поддерживаемые события как свойства с префиксами on в своих ключах. Например, Window в паре с микшином WindowEventHandlers , что позволяет использовать такой код:

window.addEventListener('print', foo);

// ...or

window.onprint = foo;

Но имеет ли стандартный мандат , что для каждого возможного имени события X должно быть соответствующее свойство onX для того же EventTarget? Или это просто соглашение, которое браузеры использовали в качестве исторического артефакта?

1 Ответ

0 голосов
/ 30 октября 2018

Стандарт жизни HTML охватывает это.

Выдержки

Обработчики событий открываются двумя способами.

Первый способ, общий для всех обработчиков событий, - это IDL-атрибут обработчика событий.

Второй способ - использовать атрибут содержимого обработчика событий. Таким образом предоставляются обработчики событий для элементов HTML и некоторые обработчики событий для объектов Window.

Для обоих этих двух способов обработчик события предоставляется через имя, которое представляет собой строку, которая всегда начинается с «on» и сопровождается именем события, для которого предназначен обработчик.

IDL и атрибуты содержимого не определяют таксономию имен событий, но поскольку атрибуты IDL видны как свойства в JS без setAttribute или getAttribute, то вышеупомянутый отрывок в основном говорит, что каждый обработчик событий должен быть представлен как свойство с on именем с префиксом.

При этом объект JS с этими именами свойств может не являться фактической целью события . Живой стандарт приводит body в качестве одного примера элемента с атрибутами IDL для обработчиков, нацеленных на соответствующий экземпляр Window ... Хотя сам элемент body реализует EventTarget.

Таким образом, в общем, вы обязаны проверить цель, но вы можете по крайней мере рассчитывать на каждое стандартное событие N, соответствующее onN, которое вы можете установить для некоторого EventTarget в вашем источнике JavaScript.

...