DOM事件详解及调用(跨浏览器事件处理程序,判断语句)
2016-06-22 09:56
771 查看
1.HTML
</pre><img src="" alt="" /><p></p><h2>1.html页面</h2><p></p><pre code_snippet_id="1724146" snippet_file_name="blog_20160622_2_8465552" name="code" class="html"><html> <head> <title>事件流</title> <meta charset="utf-8"> <script src="js/event.js"></script> <script src="js/script.js"></script> <body> <div id="box"> <input type="button" value="按钮" id="btn" onclick="showMes()"> <input type="button" value="按钮2" id="btn2"> <input type="button" value="按钮3" id="btn3"> <a href="event.html" id="go">跳转</a> </div> </body> </head>
2.evet.js
<pre name="code" class="javascript">var eventUtil={ // 添加句柄 addHandler:function(element,type,handler){ if(element.addEventListener){ element.addEventListener(type,handler,false);//DOM2级事件处理程序 }else if(element.attachEvent){ element.attachEvent('on'+type,handler);//IE事件处理程序 }else{ element['on'+type]=handler;//DOM0级事件处理程序 } }, // 删除句柄 removeHandler:function(element,type,handler){ if(element.removeEventListener){ element.removeEventListener(type,handler,false); }else if(element.detachEvent){ element.detachEvent('on'+type,handler); }else{ //<element.onclick=element["onclick"]完全等价 element['on'+type]=null; } }, getEvent:function(event){ return event?event:window.event; }, getType:function(event){ return event.type; }, getElement:function(event){ return event.target || event.srcElement; }, preventDefault:function(event){ if(event.preventDefault){ event.preventDefault(); }else{ event.returnValue=false; } }, stopPropagation:function(event){ if(event.stopPropagation){ event.stopPropagation(); }else{ event.cancelBubble=true; } } }
3.script.js
window.onload=function(){ var go=document.getElementById('go'), box=document.getElementById('box'); eventUtil.addHandler(box,'click',function(){ alert('我是整个父盒子'); }); eventUtil.addHandler(go,'click',function(e){ //e=eventUtil.getEvent(e); e=e || window.event; alert(eventUtil.getElement(e).nodeName); eventUtil.preventDefault(e); eventUtil.stopPropagation(e); }); }
相关文章推荐
- const用法
- 文件的操作(RandomAccessFile类)
- [李景山php]每天laravel-20160905|Dispatcher-5
- 6lowpan简介
- tomcat连接数设置
- zookeeper集群配置
- CentOS6.3安装Hadoop2.6.0_伪分布式配置
- Windows下配置Hadoop2.6-eclipse-plugin插件
- Redis 对象
- SSL和SSH有什么区别
- python中使用xlrd、xlwt操作excel表格详解
- Unity5.x运行时动态更新烘培贴图
- 在Linux上用Apache搭建Git服务器
- [李景山php]每天laravel-20160905|Dispatcher-5
- nginx优化缓冲缓存
- CSDN-markdown编辑器
- php5.5 连接SQL SERVER 【环境配置及DLL文件可下载】
- crontab日志
- Web开发中一些常用的在线工具
- 何为APIs DX(开发者体验),为何其如此重要