перечислить и изменить Event Listnerы на элементе
как перечислить и изменить Event Listnerы на элементе?
|
Interface EventListenerList не реализован в браузерах
|
кажется были какие-то методы у узлов, возвращающие список event listenerов
|
KOLANICH,
Та не было ничего. Просто перед добавлением сохраняйте их сами куда то, как это делаю библиотеки. Ну а потом удаляйте. |
немного подумал, и понял, что нужно сделать, чтобы производительность не сильно страдала
|
не работает...
if (!addEventListenerOriginal) { var addEventListenerOriginal = EventTarget.prototype.addEventListener; EventTarget.prototype.addEventListener = function (evt, cb, bub) { console.log(this, evt, cb, bub); addEventListenerOriginal.apply(this, arguments); } } document.body.addEventListener("contextmenu", console.info, true);//не как должно EventTarget.prototype.addEventListener.call(document.body, "fuuu", console.info, true);//TypeError: addEventListenerOriginal is undefined if (!addEventListenerOriginal) { var addEventListenerOriginal = HTMLElement.prototype.addEventListener; HTMLElement.prototype.addEventListener = function (evt, cb, bub) { console.log(this, evt, cb, bub); addEventListenerOriginal.apply(this, arguments); } } document.body.addEventListener("contextmenu", console.info, true);//работает не как должно HTMLElement.prototype.addEventListener.call(document.body, "fuuu", console.info, true);//работает как должно |
Цитата:
alert( "addEventListener" in *!*Node.prototype*/!* ); |
и что вы этим хотели сказать?
там и не должно быть, и вообще база - EventTarget, но там почему-то EventTarget.prototype.addEventListener пустой |
KOLANICH,
Вообще то должно быть. В идеале Node должен наследоваться от EventTarget и иметь addEventListener. Но увы, интерфейс EventTarget в большинстве браузеров реализовал не так как надо. А addEventListener в цепочке прототипов появляются с Element и Document. |
Перепробовал и для Element.prototype сделать, результат тот же, что и для HTMLElement.prototype.
Не пашед. Если немного поразмыслить, то мы должны присваивать значение самому EventTarget, а не его прототипу, ибо он сам и есть прототип. Это также было опробовано, но не работает. Почему не работает через HTMLElement.prototype тоже не понятно. Я вообще ничего не понимаю. |
Часовой пояс GMT +3, время: 03:33. |