也许我的问题存在serval子问题:
$(element).data('events')
无法在<element onclick="some_functions()">
注册活动。我们怎么能得到它?我的目标是在本机事件之前插入一个事件(由html页面的程序员注册)。我发现了两个解决方案
HTMLElement.prototype.addeventlister
as described here 但是,我发现这两种方法都无法解决这种情况
<element onclick="some_functions()">
答案 0 :(得分:0)
您可以通过onclick
属性访问(并覆盖)该事件处理程序。如果你有
<span id="elem" onclick="some_functions()">
然后document.getElementById("elem").onclick
将产生匿名函数
function (event) {
some_functions()
}
要拦截它,您可以使用类似
的内容var fn = elem.onclick;
elem.onclick = function() {
console.log("before");
var res = fn.apply(this, arguments);
console.log("after");
return res;
};
免责声明:这可能不适用于旧浏览器,我不知道内联属性事件处理程序和传统事件注册的发明者(Netscape,IE)如何处理这些问题。他们可能也做过类似eval(elem.getAttribute("onclick"))
的事情,无论如何你都可以像这样访问处理程序代码(作为字符串)。