有关于addEventListener以及removeEventListener的相关问题
2017-12-29 10:18
691 查看
之前在编写js代码时经常容易爆出
addEventListener主要解决了js中需要触发多个函数而被创造出来的,
其中包含三个参数 addEventListener( “触发事件”,”需要运行的函数名”,”是否需要阻止冒泡 (默认为阻止冒泡事件)”)
这里需要注意的是addEventListener中的触发函数不可加括号,否则就会失效。由于只能写触发函数的函数名,因此如果需要传参就需要用到bind( )事件(IE6、7、8不支持)具体请详见bind、call、apply的详细介绍
addEventListener在IE中会出现不被支持的现象,因此我们需要做一些兼容性处理:
removeEventListener()
此方法旨在移除添加到addEventListener( )中的触发事件。
IE兼容性写法:
cannot read property "....." of null这种叫“捕获类型错误”,一般往往是因为编写人员粗心大意捕获错了对象所导致的,或是在捕获时类型错误。
addEventListener主要解决了js中需要触发多个函数而被创造出来的,
其中包含三个参数 addEventListener( “触发事件”,”需要运行的函数名”,”是否需要阻止冒泡 (默认为阻止冒泡事件)”)
<div id="clicks">请点击我</div> <style> #clicks{ width: 200px; height: 30px; text-align: center; line-height: 30px; text-align: center; margin: 0 auto; border: 1px red solid; } </style> <script> var y=document.getElementById("clicks"); y.addEventListener("click",fun); y.addEventListener("click",funs); function fun(){ alert("Hello World!") } function funs(){ alert("Hello William.Yao") } </script>
这里需要注意的是addEventListener中的触发函数不可加括号,否则就会失效。由于只能写触发函数的函数名,因此如果需要传参就需要用到bind( )事件(IE6、7、8不支持)具体请详见bind、call、apply的详细介绍
<script> var y=document.getElementById("clicks"); y.addEventListener("click",fun.bind()); y.addEventListener("click",fun.bind()); function fun(){ alert("Hello World!") } function funs(){ alert("Hello William.Yao") } </script>
addEventListener在IE中会出现不被支持的现象,因此我们需要做一些兼容性处理:
var y = document.getElementById("clicks"); if( y.addEventListener){ //所有主流浏览器,除了 IE 8 及更早 IE版本 y.addEventListener("click",fun); }else if( y.attachEvent){ // IE 8 及更早 IE 版本 y.attachEvent("onclick",fun); }
removeEventListener()
此方法旨在移除添加到addEventListener( )中的触发事件。
<style> #myDIV { background-color: coral; border: 1px solid; padding: 50px; color: white; } </style> <div id="myDIV"> div 元素添加了 onmousemove 事件句柄,在你移动鼠标时会显示随机数。 <p>点击按钮移除 DIV 的事件句柄。</p> <button onclick="removeHandler()" id="myBtn">点我</button> </div> <p id="demo"></p> <script> document.getElementById("myDIV").addEventListener("mousemove", myFunction); function myFunction() { document.getElementById("demo").innerHTML = Math.random(); } function removeHandler() { document.getElementById("myDIV").removeEventListener("mousemove", myFunction); } </script>
IE兼容性写法:
var x = document.getElementById("myDIV"); if (x.removeEventListener) { // // 所有浏览器,除了 IE 8 及更早IE版本 x.removeEventListener("mousemove", myFunction); } else if (x.detachEvent) { // IE 8 及更早IE版本 x.detachEvent("onmousemove", myFunction); }
相关文章推荐
- 关于原生事件绑定中attachEvent与addEventlistener中兼容性以及attachEvent函数中this指代window问题
- 与事件处理相关的function:addEventListener、removeEventListener与attachEvent、detachEvent
- 关于次小生成树,以及相关问题
- 关于ORACLE的ora-12505报错以及连接问题的解决及相关资料
- 关于ORACLE的ora-12505报错以及连接问题的解决及相关资料
- 关于讲座“如何更好地做研究以及博士申请相关问题”的总结
- 关于链表的一些经典问题以及相关面试题
- 关于 addEventListener, removeEventListener
- 关于input事件是否全选以及如何获取checked的值的相关问题
- 关于ORACLE的ora-12505报错以及连接问题的解决及相关资料
- 关于ORACLE的ora-12505报错以及连接问题的解决及相关资料
- Baidu地图之removeEventListener失效问题
- 关于ORACLE的ora-12505报错以及连接问题的解决及相关资料
- 关于最大子序列和问题以及相关衍生问题的分析
- 关于ORACLE的ora-12505报错以及连接问题的解决及相关资料
- 关于智能家居主界面,通话记录界面设计的相关问题(ViewPager以及自定view)
- 尽管关于Java中文问题的讨论已经相当多了,但由于Java的相关技术标准繁多,面向Java的Web服务器、应用服务器以及JDBC数据库驱动等都没有官方的标准,所以Java应用在处理中文时所存在的问
- 关于在myeclipse中用jsp访问实体bean的一个问题的解决(Exception sending context initialized event to listener instance of class)
- 关于适配ios8、iPhone6、iphone plus以及资源优化相关问题