Вот один вариант - переопределить стандартную реализацию:
var addEventListenerImplementation = Node.prototype.addEventListener;
Node.prototype.addEventListener = function (event, callback) {
alert("Hey, someone attached an event handler to me");
addEventListenerImplementation.call(this, event, callback);
};
document.getElementById("div").addEventListener("click", function() {
alert("clicked");
});
div {
background: red;
width: 300px;
height: 300px;
}
<div id="div"/>
Это должно работать в большинстве случаев, но, к сожалению, addEventListener
не единственный способ прикрепить события, так что вы, возможно, потребуется также переопределить Event.prototype.observe
. Наконец, если обработчик события подключен с помощью element.onclick
или любой другой функции onevent
, вы не можете их переопределить. Одним возможным возможным решением может быть следующее:
- Задать вопрос об объекте недвижимости
Node.prototype
. Object.defineProperty(Node.prototype, "ONMYCLICK", function() { get: function() { return null; }, set: function (handler) { console.log("Hey, a handler was attached!"); this.onclick = handler; } });
- Открыть скрипт библиотеки в вашем любимом текстовом редакторе и заменить все вхождения
.onclick
с .ONMYCLICK
- ???
- Profit
Заканчивать IFrame Песочница http://www.html5rocks.com/en/tutorials/security/sandboxed-iframes/ – Deepak
Почему вы должны знать _where_ он добавил? – Halcyon
Не уверен, что это возможно только из javascript, но вы можете использовать инструменты Chrome. Осмотрите элемент, который, как вы подозреваете, подключен к прослушивателю событий, и найдите вкладку «Слушатели событий» рядом со вкладкой «Стили». –