Ответ 1
За пределами нескольких краевых случаев да, вы можете, согласно Perfection Kills:
Фокус в том, что многие современные браузеры сообщают свойство, соответствующее имени события, как существующее в элементе.
В принципе, код выглядит следующим образом:
'onclick' in document.documentElement; // true
'onclick2' in document.documentElement; // false
Он использует его для обнаружения поддержки событий в разных браузерах, но его также можно использовать для определения того, поддерживает ли элемент событие:
Событие должно быть проверено на элементе, который мог бы инициировать это событие.
Итак, вы также получаете такие результаты:
'onreset' in document.documentElement; // false
'onreset' in document.createElement('input'); // true