Возвращение неопределенных возвратов обработчика событий

Следующие коды не работают:

function dnd(){
}
var ele = document.getElementById("relative");
ele.addEventListener("click",dnd,false);
document.write(ele.onclick);

вывод undefined. Я предполагаю, что вывод должен быть function onclick(event){dnd();}

Что я должен сделать для решения этой проблемы?

Любое предложение ценится.

1
задан Daniel Vassallo 9 August 2010 в 14:12
поделиться

4 ответа

Существует 3 распространенных способа прикрепления событий к узлам DOM.

Метод addEventListener () - это способ зарегистрировать прослушиватель событий, как указано в W3C DOM. Он имеет много преимуществ, но не работает в Internet Explorer. Для Internet Explorer вам придется использовать метод attachEvent () , который предлагает аналогичные функции.

С другой стороны, свойство onclick является более старым, но более поддерживаемым способом подключения обработчиков событий. Однако у него есть определенные недостатки, такие как возможность использовать только один обработчик событий для каждого события.

Что касается того, как вернуть обработчики событий, прикрепленные к конкретному узлу, это зависит от метода, который вы используете для присоединения событий. Проблема с вашим примером заключается в том, что вы используете метод addEventListener () для присоединения события, а затем пытаетесь прочитать его с помощью свойства onclick .

Вы можете прочитать следующую публикацию Stack Overflow для дальнейшего изучения этой темы, особенно сообщение от @Crescent Fresh :

2
ответ дан 2 September 2019 в 22:19
поделиться

Свойство onclick будет отображать обработчик событий только в том случае, если он зарегистрирован встроенным через разметку ( например,

> >).

Зачем нужно читать обработчик событий? Это относительно странная вещь ...

0
ответ дан 2 September 2019 в 22:19
поделиться

Существуют разные способы создания обработчиков событий, и они используют разные механизмы внутри DOM. В частности - и как вы обнаружили эмпирически - добавление прослушивателя событий через addEventListener не влияет на атрибут onclick элемента. Механизмы просто раздельные.

0
ответ дан 2 September 2019 в 22:19
поделиться

Это один из текущих ограничение модели регистрации событий W3C. если вы регистрируетесь с использованием JS-методов, то стандартного способа получения обработчиков не существует.

Последние события DOM LEVEL 3 W3C добавляет спецификацию eventListenerList. Полагаю, нам не хватает какой-то поддержки этого API в браузерах.

Конечно, если вы добавите свой метод традиционным способом



      


, то ваш пример будет работать.

Некоторые ссылки на StackOverFlow

текст ссылки

0
ответ дан 2 September 2019 в 22:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: