最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

addEventListener和attachEvent二者綁定的執(zhí)行函數(shù)中的this不相同

 更新時間:2012年12月09日 17:32:23   作者:  
寫 addEventListener 和 attachEvent 區(qū)別的博文不少,不過大部分都把重點放置于前者是Firefox chrome,后者只是存在于IE系列中
寫 addEventListener 和 attachEvent 區(qū)別的博文不少,不過大部分都把重點放置于前者是Firefox chrome,后者只是存在于IE系列中。

最近在寫一個事件代理的時候,遇到一個BUG,發(fā)現(xiàn)除此外,二者綁定的執(zhí)行函數(shù)中的 this 是不相同的,addEventListener 和 attachEvent函數(shù)在運行時候的上下文是不相同的。
用了一個簡單的demo來描述這個不同點:
復(fù)制代碼 代碼如下:

<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>

點擊 test1
chrome 下 第一次alert:" a1",第二次alert :"undefined"
firefox 下 第一次alert:" a1",第二次alert :"undefined"
IE 中 第一次alert:" a1",第二次alert :"undefined"
這很好理解,這時候的this指向 #a1 這個DOM,所以alert id是 #a1的id “a1”,然后在this中,并沒有testGolb這個變量,所以是undefined
點擊 test2
chrome下 第一次alert:" a1",第二次alert :"undefined"
firefox 下 第一次alert:" a1",第二次alert :"undefined"
IE 中 第一次alert:" undefined",第二次alert :"diff"

chrome 和 firefox同點擊test1時候的表現(xiàn)是一致的,而IE就不同了。使用attachEvent綁定事件時候,函數(shù)中的this指向的是window,并不是添加事件的dom,所以第一次的alert 值是 undefined,而this.testGlob 的值是diff。

相關(guān)文章

最新評論

秦安县| 武汉市| 方山县| 清涧县| 昔阳县| 永新县| 临湘市| 隆昌县| 和田县| 耒阳市| 佛山市| 长乐市| 渑池县| 泉州市| 莱阳市| 利辛县| 乌拉特中旗| 铜梁县| 封开县| 赤壁市| 三门县| 辽源市| 曲周县| 兰考县| 大庆市| 房产| 西乡县| 凭祥市| 鞍山市| 绥阳县| 七台河市| 灯塔市| 封开县| 伽师县| 高青县| 博客| 灵璧县| 临泽县| 文安县| 龙山县| 富宁县|