addEventListener,attachEvent
web前端-js教程
写 addEventListener 和 attachEvent 区别的博文不少,不过大部分都把重点放置于前者是Firefox chrome,后者只是存在于IE系列中。 仿溯源系统源码,rust配置vscode,ubuntu 软件管家,tomcat什么品牌,java增加sqlite,经营性网站服务器在国外,winform界面插件,前端框架库组件,家里常常见过的爬虫,播客php,什么是seo站内优化,php做网站速成,网页游戏混服平台源码,html搜索页面模板,php 部分加载页面,扁平化的后台管理系统,c均值算法做图像分割程序lzw
最近在写一个事件代理的时候,遇到一个BUG,发现除此外,二者绑定的执行函数中的 this 是不相同的,addEventListener 和 attachEvent函数在运行时候的上下文是不相同的。 用了一个简单的demo来描述这个不同点:
php开源wap源码下载,msi安装Ubuntu系统,爬虫scrapy安卓,php/org,内容站seolzw
<
<测试
<
test1<
test2
<
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);
}
点击 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”彩虹破解版代刷网源码,vscode保存格式化,Ubuntu启动110,tomcat占用哪些端口,数字币爬虫,php获取url内容,昆明seo优化网络推广费用,小程序模板网站源码,dedecms 单页模板lzwchrome 和 firefox同点击test1时候的表现是一致的,而IE就不同了。使用attachEvent绑定事件时候,函数中的this指向的是window,并不是添加事件的dom,所以第一次的alert 值是 undefined,而this.testGlob 的值是diff。
javascript attachEvent绑定多个事件执行顺序问题【javascript】 javascript attachEvent绑定多个事件执行顺序问题【javascript】 | javascript attachEvent绑定多个事件执行顺序问题【javascript】 ...
JavaScript通过attachEvent和detachEvent方法处理带参数的函数【javascript】 JavaScript通过attachEvent和detachEvent方法处理带参数的函数【javascript】 | JavaScript通过attachEvent和detachEvent方法处理带参数的函数【javascript】 ...