Javascript ';attacheventlistener';和';onclick';原型
我的问题可能有以下几个子问题:Javascript ';attacheventlistener';和';onclick';原型,javascript,jquery,prototype,Javascript,Jquery,Prototype,我的问题可能有以下几个子问题: 是否有一种将事件绑定到元素的通用解决方案?(没有jquery或其他javascript库) 我发现$(元素)。数据('events')无法在中注册事件。我们怎样才能得到它 我的目标是在本机事件(由html页面的程序员注册)之前插入一个事件。我找到了两个解决办法 使用jQuery 修改HTMLElement.prototype.addeventlister 然而,我发现这两种方法都不能解决这种情况 <element onclick="some_func
- 是否有一种将事件绑定到元素的通用解决方案?(没有jquery或其他javascript库)
- 我发现
无法在$(元素)。数据('events')
中注册事件。我们怎样才能得到它
- 使用jQuery
- 修改
HTMLElement.prototype.addeventlister
<element onclick="some_functions()">
您可以通过onclick
属性访问(并覆盖)该事件处理程序。如果你有
<span id="elem" onclick="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”))
的事情,在任何情况下,您都可以像那样访问处理程序代码(作为字符串)。对于第一个问题,我们是否可以仅使用javascript将所有事件绑定到一个元素?也许不是跨浏览器,只是为了Chrome。不,至少不是从JS编程的。不过,您可以在开发工具中检查它们。我以为你已经在相关问题中找到了答案?
var fn = elem.onclick;
elem.onclick = function() {
console.log("before");
var res = fn.apply(this, arguments);
console.log("after");
return res;
};