IE绑定事件,this指向当前的对象的变通方法
通常情况下,在IE下通过attachEvent给对象绑定事件后,this指向的并不是当前触发事件的DOM对象,我们必须使用
?
event.srcElement手动获取。现在主流浏览器(非IE)都支持addEventListener方法。为了兼容,一般都这么写:
?
?
?
? ? 该函数需要一个事件对象作为参数,然后返回一个修正后的对象。现在修改一下addEvent方法:
?
? ??function addEvent(o,evt,fn,bubble){
bubble = bubble || false; evt = evt.toLowerCase(); if(o.addEventListener){ o.addEventListener(evt,function(e){ e = fixEvent(e); fn.call(e.target,e); },bubble); }else{ o.attachEvent("on"+evt,function(e){e = fixEvent(e); //ie不支持currentTarget,手动设置为o if(!e.currentTarget){ e.currentTarget = o; }; fn.call(e.target,e); }); }}?
?
? ?这样我们绑定的test函数就可以在不同浏览器里执行了。