dom事件

事件处理程序
1、HTML事件处理程序(JS和HTML代码耦合度高,修改代价大)
2、DOM0级事件处理程序(可添加多个事件处理程序,可通过赋值为null去除事件)
3、DOM2级事件处理程序(可添加多个事件处理程序,通过addEventListener添加的必须yogaremoveEventListener去除,注:IE中无效)
定义了两个方法--用于处理指定和删除事件处理程序的操作:
addEventListener()添加事件监听程序
removeEventListener()移除事件监听程序
三个参数设置;事件名称,处理方法(函数),布尔值--false:表示在冒泡阶段调用事件处理程序(可以最大限度的兼容浏览器),
一般设为false;true表示在捕获阶段调用事件处理程序
4.IE事件处理程序:IE也提供了类似DOM2级事件处理程序
attachEvent()添加事件
detachEvent()删除事件
接收相同的两个参数,事件处理程序的名称和事件处理程序的函数。去掉了布尔值,不使用第三个参数的原因:IE8以及更早的浏览器版本只支持事件冒泡!

注意:
1、若事件名称有on,则需去掉on。onclick --> click,onmouseover --> mouseover等等;
2、false 最大限度兼容所有浏览器--事件冒泡流。
3.通过addEventListener添加的事件只能通过removeEventListener来删除。--参数要与添加事件时相同
btn3.removeEventListener(参数);//参数必须和btn.addEventListener的参数一致,删除事件监听

DOM0级和DOM2级事件处理程序可以给一个事件绑定多个函数,事件触发的时候会按照绑定顺序执行各个函数。如下所示:
btn3.addEventListener('click',showMes,false);
btn3.addEventListener('click',showMes,function(){alert(this.value);},false);

<script>
            var b=document.getElementById("btn");
            //dom0事件
//            b.onclick=function (){alert("dasdasd")};
            //跨浏览器
            /*添加事件*/
            
            function showmegs(){
                alert("hahahahaah");
            }
            var eventUtil={
                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;
                    }
                },            
                /*删除事件*/
                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;
                    }
                }
                
            }
            
            eventUtil.addHandler(b,'click',showmegs);
                
        </script>

事件对象?在触发DOM上的事件时都会产生一个对象
事件对象EVENT
①DOM中的事件对象  属性
(1)、type属性用于获取事件类型
(2)、target属性用于获取事件目标
(3)、stopPropagation()方法 用于阻止事件冒泡
(4)、preventDefault() 方法 阻止事件的默认行为
如果一个div里面有一个button,button和div都绑定了click事件,如果是事件冒泡,那么点击button的时候,首先触发button的处理函数,然后触发div的处理函数。(由内而外)
如果有时候不想冒泡,也就是不希望div的事件被触发,那么需要阻止事件冒泡。stopPropagation()方法
如果需要阻止a标签的默认属性跳转,可以使用阻止事件的默认行为preventDefault()方法
dom事件

dom事件