#javascript #dom #safari #webkit #gecko
#javascript #dom #safari #webkit #гекко
Вопрос:
Я просматривал документы по адресу developer.mozilla.org и документы Apple dev docs, но я не могу найти документацию, которая объясняет, можете ли вы программно определить, поддерживает ли конкретный HTML-тег данный EventListener.
Например, я знаю, что <script>
тег не будет поддерживать прослушиватель кликов, поскольку нажимать не на что, но откуда я это знаю?
Или, за исключением этого, есть ли где-нибудь простая ссылка на то, какие события поддерживает каждый тег?
Ответ №1:
За исключением нескольких крайних случаев, да, вы можете, согласно Perfection Kills:
Хитрость заключается в том, что многие современные браузеры сообщают о свойстве, соответствующем имени события, как существующем в элементе.
В основном код выглядит так:
'onclick' in document.documentElement; // true
'onclick2' in document.documentElement; // false
Он использует его для обнаружения поддержки событий в различных браузерах, но его также можно использовать для определения того, поддерживает ли элемент событие:
Событие должно быть проверено на элементе, который действительно может вызвать это событие.
Таким образом, вы также получаете такие результаты:
'onreset' in document.documentElement; // false
'onreset' in document.createElement('input'); // true
Комментарии:
1. Возможно, это не будет делать именно то, что вы хотите, поскольку
'onclick' in document.createElement('script')
возвращает true . Но это просто означает, что если вы дадите<script>
некоторуюdisplay:block
и другую магию CSS, вы можете предоставить ему прослушиватель щелчков. Этот метод сообщает, что браузер может технически поддерживать; возможно, вам потребуется немного отфильтровать его результаты, чтобы заставить его работать так, как вы хотите.
Ответ №2:
я говорю вам прочитать это
… и лучшее, что вы должны думать, это то, что события предназначены только для объектов DOM . Тогда все объекты в DOM могут иметь события (но читать список).