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已经表示了动作的对象了。然后该怎么操作就怎么操作了。