addEventListener attachEvent和解决IE 6 7 8 this指向错误
来源:互联网 发布:天天卡牌淘宝杂货铺 编辑:程序博客网 时间:2024/06/05 08:05
标准浏览器中可以使用addEventListener()函数来给DOM元素绑定事件,使用removeEventListener()函数移除事件绑定,而IE6-8不支持这两个函数,只能使用attachEvent()和detachEventListener()。
addEventListener()和attachEvent()的区别主要有以下几点:
- addEventListener(type,handler,capture)有三个参数,其中type是事件名称,如click,handler是事件处理函数,capture是否使用捕获,是一个布尔值,一般为false,这是默认值,所以第三个参数可以不写。
- attachEvent(type,handler)有两个参数,其中type是事件名称,如onclick,handler是事件处理函数,IE6-8不支持事件捕获的,只支持事件冒泡。
- 如果一个事件在绑定以后有解除绑定的需要,可以使用removeEventListener(),参数和addEventListener()一样,IE6-8使用detachEvent()函数,参数和attachEvent()一样。
- 在IE6-8浏览器中,使用了attachEvent或detachEvent后事件处事函数里面的this指向window对象,而不是事件对象元素。
- addEventListener绑定的事件是先绑定先执行,attachEvent绑定的事件是先绑定后执行
解决IE6-8 attchEvent this指向window的方法:
1.使用事件处理函数.apply(事件对象,arguments),代码如下:
<a id="link">点击</a><script type="text/javascript"> var object=document.getElementById('link'); function handler(){ alert(this.innerHTML); } object.attachEvent('onclick',function(){ handler.call(object,arguments); });</script>
这种方式的缺点是绑定的事件无法取消绑定,原因上面已经说了,匿名函数和匿名函数之间是互不相等的。
2.使用事件源代替this关键字
<a id="link">点击</a><script type="text/javascript"> function handler(e){ e=e||window.event; var _this=e.srcElement||e.target; alert(_this.innerHTML); } var object=document.getElementById('link'); object.attachEvent('onclick',handler);</script>
0 0
- addEventListener attachEvent和解决IE 6 7 8 this指向错误
- js addEventListener和attachEvent函数中的this的指向问题及解决方法
- IE6,7,8使用attachEvent时this指向问题
- 使用attachEvent和addEventListener区分浏览器是火狐还是IE
- DOM2级事件 addEventListener() 和IE attachEvent()的区别
- attachEvent和addEventListener
- attachEvent和addEventListener使用方法
- attachEvent和addEventListener 使用方法
- attachEvent和addEventListener
- attachEvent和addEventListener
- attachEvent 和addEventListener
- addEventListener和attachEvent区别
- js addEventListener和attachEvent
- window.attachEvent和addEventListener
- attachEvent和addEventListener详解
- Js addEventListener 和 attachEvent
- attachEvent和addEventListener详解
- addEventListener() 和 attachEvent()
- 弹出框
- python--删除文本中的空行
- NGINX基本操作
- centos7中启动tomcat提示bash: tomcat8.0.39/bin/startup.sh: 权限不够
- UVa - 11729 - Commando War ( 排序+贪心 )
- addEventListener attachEvent和解决IE 6 7 8 this指向错误
- Android Studio工程里不需要上传到svn的文件
- 浅谈JavaScript DOM绘制柱状图
- 《机器学习实战》学习笔记(一)
- Spark 实践 - RDD 的 join操作之需要注意的事项 - RDD为空的join操作
- 自定义基于netty的rpc框架(3)---客户端的实现
- 孪生素数
- 截取控件和屏幕图片并保存
- 一个上架了的React Native项目实战总结