JS中的DOM事件
来源:互联网 发布:个人知识管理系统java 编辑:程序博客网 时间:2024/06/05 14:22
1.HTML事件处理程序
HTML<div id="box"><input type="button" name="" id="btn" value="按钮" onclick="showMessage()"/></div>
JS<script type="text/javascript">function showMessage(){alert("Hellow World");}</script>
HTML事件缺点:
HTML和JS代码紧密的耦合在一起,JS代码个HTML都需要进行修改。
2.DOM0级事件处理程序
(较传统的方式:把一个函数赋值给一个事件的处理程序属性用的比较多的方法,简单,跨浏览器的优势)
HTML<input type="button" value="按钮2" id="btn2"/>
JS<script type="text/javascript"> var btn2=document.getElementById("btn2"); btn2.onclick=function(){ alert("这是通过DOM0级添加的事件!"); } //btn2.onclick=null;删除OnClick属性,事件注销</script>
没有HTML事件处理程序的缺点。
3.DOM2级事件处理程序
(DOM2级事件定义了两个方法:用于处理指定和删除事件处理程序的操作;addEventListener()和removeEventListner();接受三个参数:要处理的事件名、作为事件处理程序的函数和布尔值)
HTML<input type="button" value="按钮3" id="btn3"/>
JS var btn3=document.getElementById("btn3");// 方法1 btn3.addEventListener("click",showMessage,false);// 方法2 btn3.addEventListener("click",function(){ alert("DOM2事件处理程序"); },false);// btn3.removeEventListener("click",showMessage,false);删除OnClick属性,事件注销
DOM2事件缺点:
IE8及以下浏览器不兼容该方法。
4.IE事件处理程序attachEvent()添加事件,detachEvent()删除事件
(接收相同的两个参数:事件处理程序的名称和事件处理程序的函数)
不使用第三个参数的原因:IE8以及更早的浏览器版本只支持事件冒泡!
HTML<input type="button" value="按钮4" id="btn4"/>
JS var btn4=document.getElementById("btn4"); //方法1 btn4.attachEvent("onclick",showMessage); //方法2 btn4.attachEvent("onclick",function(){ alert("IE事件处理程序"); }); //btn4.detachEvent("onclick",showMessage);删除OnClick属性,事件注销
IE事件缺点:
除IE外其他浏览器不支持。
5.跨浏览器的事件处理程序HTML<input type="button" value="按钮5" id="btn5"/>
var btn5=document.getElementById("btn5"); //跨浏览器事件处理程序 var event={ //添加句柄 addHandler:function(element,type,handler){//(节点,方法,事件名) if(element.addEventListener){ element.addEventListener(type,handler,false); }else if(element.attachEvent){ element.attachEvent("on"+type,handler); }else{ element["on"+type]=handler;// element.onclick===element["onclick"] } }, //删除句柄 removeHandler:function(element,type,handler){//(节点,方法,事件名) if(element.removeEventListener){ element.removeEventListener(type,handler,false); }else if(element.detachEvent){ element.detachEvent("on"+type,handler); }else{ element["on"+type]=null;// element.onclick===element["onclick"] } } } event.addHandler(btn5,"click",showMessage); //event.removeHandler(btn5,"click",showMessage);删除OnClick属性,事件注销
现在兼容性处理之后,兼容更多浏览器的按钮事件了。但是调用这个方法之前,要把前面其他类型的按钮事件注释掉,否则这个方法调用默认无效。所以有了这个兼容性处理方法之后,我们想用的时候,直接调用event.addHandler(节点,方法,事件名);就好了,不用的时候记得event.removeHandler(节点,方法,事件名);防止内存泄漏。
0 0
- JS中的DOM事件
- Js中的DOM事件
- JS事件--事件对象之DOM中的事件对象
- DOM事件(JS事件)
- JS-CSS-DOM事件
- 【JS】DOM事件模型
- js DOM事件详解
- JS-DOM事件
- DOM事件对象【JS】
- JS HTML DOM事件
- js DOM 点击事件
- DOM-3 JS事件
- js---JavaScript中的事件委托/事件代理,如何通过事件委托进行异步DOM事件监听
- JS笔记【归纳】:DOM中的事件处理程序
- js中的DOM事件,不能说最全,只能说够用
- DOM 中的事件处理
- DOM中的事件模拟
- dom中的事件
- tomcat启动错误提示Failed to destroy end point associated with ProtocolHandler
- Java常用类
- Leetcode #1 Two Sum (easy)
- java 异常处理
- 【Unity3D游戏开发】GameObject.Find()、Transform.Find查找隐藏对象 (十)
- JS中的DOM事件
- leetcode---62. Unique Paths
- 特权级保护
- 在Java中Arrays工具类实现功能的六种方法
- POJ2429 GCD & LCM Inverse (大整数分解)
- Java类的初始化顺序
- 算法日记(Java实现)第20160904(6)期——CCF俄罗斯方块
- 数组中a与&a的区别
- 网易有道2017内推编程题 队列操作(映射)