javascript中的事件绑定兼容性问题浅析

项目中经常遇到这样的代码:

function changeStyle(e){
    var e = e || window.event;
    var target = e.srcElement || e.target;
    target.style.display = "none";
}
document.getElemntById("xxx").onclick = changeStyle;

这里的e代表什么了,这样看,e是一个参数,当调用函数这样的一个事件函数的时候,一般实参是null,这时候如果是ie处理,e = window.event;window.event是什么了,event是window这个全局对象的一个属性,表示最后一次执行的动作。在w3c标准下处理的话,w3c有规定,如果实参为空,触发的事件会作为第一个参数传入,也就是argument[0];所以也可以这样写:

function changeStyle(e){
    var e = argument[0] || window.event;
    var target = e.srcElement || e.target;
    target.style.display = "none";
}
document.getElemntById("xxx").onclick = changeStyle;

这样e就是取到了刚刚发生的事件动作,再来看target,在ie下,e.srcElement表示事件动作的对象,在w3c标准下,e.target表示事件动作的对象。so,target已经表示了动作的对象了。然后该怎么操作就怎么操作了。

 

原文地址:https://www.cnblogs.com/fredshare/p/2634165.html