JS: addEventListener 和 attachEvent 绑定的函数中this的区别
<div id="cnblogs_post_body"> 写 addEventListener 和 attachEvent 区别的博文不少,不过大部分都把重点放置于前者是Firefox chrome,后者只是存在于IE系列中。最近在写一个事件代理的时候,遇到一个BUG,发现除此外,二者绑定的执行函数中的 this 是不相同的,addEventListener 和 attachEvent函数在运行时候的上下文是不相同的。
用了一个简单的demo来描述这个不同点:
<div class="cnblogs_code"><html xmlns="http://www.w3.org/1999/xhtml"><<head><meta http-equiv="Content-Type" content="text/html;charset=utf-8" /> <<title>测试</title></head><<body><div id="div1"> <a href="#" id="a1">test1</a></div><<div id="div2"> <a href="#" id="a2">test2</a></div></body><<script type="text/javascript"> var testGolb = "diff"; //定义一个全局变量 var a1 = document.getElementById( "a1"); var a2 = document.getElementById( "a2"); function getEleId ( e) { // body... alert( this.id); alert( this.testGolb); } a1.onclick = getEleId; if( a2.attachEvent){ a2.attachEvent( "onclick", getEleId); }else{ a2.addEventListener( 'click',getEleId); }</script></html>
页:
[1]