美文网首页
(七)事件处理

(七)事件处理

作者: 一只环环环 | 来源:发表于2017-03-01 23:49 被阅读10次
1.事件捕获与事件冒泡

事件捕获 :事件从顶层元素(document)传播到具体发生事件的元素(Netscape)
事件冒泡 :事件从具体元素传播到顶层元素 (IE)

事件流模型
2.事件处理
  1. HTML 事件处理
<div id="clickItem" onclick="clickMe(this)"></div>
<script>
    function clickMe() {
        alert(arguments[0].id+" clicked!");
    }
</script>
  1. DOM0 事件处理
<div id="clickItem"></div>
<script>
    var clickDiv = document.getElementById("clickItem");
    clickDiv.onclick = function(){
        //事件处理程序中this指向发生事件的对象
        alert(this.id+" clicked!");
    }
</script>
  1. DOM2 事件处理
<div id="clickItem"></div>
<script>
    var clickDiv = document.getElementById("clickItem");
    function handler(){
        alert(this.id+" clicked!");
    }
    function handler2(){
        alert(this.id+" clicked again!");
    }

    //第一个参数:事件类型
    //第二个参数:处理程序
    //第三个参数:true,捕获阶段处理/false,冒泡阶段处理
    clickDiv.addEventListener('click',handler,false);

    //可以添加多个处理程序,按照添加的顺序执行
    clickDiv.addEventListener('click',handler2,false);

    //dom2的事件处理程序只能这样移除
    clickDiv.removeEventListener('click',handler,false)
</script>
  1. IE事件处理
<div id="clickItem"></div>
<script>
    var clickDiv = document.getElementById("clickItem");
    function handler(){
        alert(this.id+" clicked!");
    }
    function handler2(){
        alert(this.id+" clicked again!");
    }
    //第一个参数:事件类型,需要加上"on"前缀
    //第二个参数:处理程序
    clickDiv.attachEvent('onclick',handler);
    //可以添加多个处理程序,与DOM不同,IE按照添加顺序的反序执行,这里先输出again
    clickDiv.attachEvent('onclick',handler2);
    //IE事件处理程序移除
    clickDiv.detachEvent('onclick',handler)
</script>
3.事件对象

1 事件对象:在处理程序(handler)中传入,生命周期为处理期间

event.currentTarget     //处理事件的目标
event.target            //事件的目标DOM
event.type              //事件类型
event.eventPhase        //事件阶段
event.preventDefault()  //取消事件的默认行为
event.stopImmediatePropagation() //立即取消任何捕获或者冒泡行为
event.stopPropagation() //取消冒泡,不再传播事件

2 .IE 事件对象:

event.srcElement     //事件的目标IE
event.cancelBubble() //取消冒泡IE
4.通用的事件监听对象

    var EventUtil = {
        //添加监听
        addHandler:function(ele,handler,type){
            if(ele.addEventListener){
                ele.addEventListener(type,handler,false);
            } else if(ele.attachEvent){
                ele.attachEvent("on"+type,handler);
            } else{
                ele["on"+type] = handler;
            }
        },
        //移除监听
        removeHandler:function(ele,handler,type){
            if(ele.removeEventListener){
                ele.removeEventListener(type,handler,false);
            }else if(ele.detachEvent){
                ele.detachEvent("on"+type,handler);
            }else{
                ele["on"+type] = null;
            }
        },
        //获取事件对象
        getEvent:function(event){
            return event ? event : window.event;
        },
        //获取事件目标
        getTarget: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;
            }
        }
    }

相关文章

  • (七)事件处理

    1.事件捕获与事件冒泡 事件捕获 :事件从顶层元素(document)传播到具体发生事件的元素(Netscape)...

  • 编写可维护的JavaScript(三)

    第七章 事件处理 7.1 隔离应用逻辑 将应用逻辑从事件处理程序中抽离出来 事件处理程序只保留和用户行为相关 7....

  • JS 事件

    目录 事件流 事件处理程序HTML事件处理程序DOM0级事件处理程序DOM2级事件处理程序IE事件处理程序跨浏览器...

  • react事件处理

    一,事件处理 写法:on+事件名称= {事件处理函数} 类组件触发写法on+事件名称 = 事件处理函数 ---...

  • 跨浏览器的事件处理程序

    事件处理程序有DOM0级事件处理程序、DOM2级事件处理程序,IE事件处理程序,DOM0级事件处理程序具有简单,跨...

  • 自顶向下深入分析Netty(八)--ChannelHandler

    8.1 总述 由第七节的讲述可知ChannelHandler并不处理事件,而由其子类代为处理:ChannelInb...

  • App事件中心

    App事件中心,事件的的生产端和处理端分离,事件处理结果广播通知,事件状态(初始化、处理中和处理完成)管理,事件类...

  • Chapter 07. Broadcast

    阅读原文 7.1 . 理论概述 广播事件处理属于系统级的事件处理(一般事件处理是属于View级的事件处理) 一个应...

  • iOS和Flutter里的事件处理

    目录先说一下事件处理里的被处理者:事件一、iOS里的事件二、Flutter里的事件然后说一下事件处理里的处理者:响...

  • react文档——事件处理

    事件处理 React 元素的事件处理和 DOM 元素的事件处理非常相似。但也有一些语法差异: React 事件使用...

网友评论

      本文标题:(七)事件处理

      本文链接:https://www.haomeiwen.com/subject/eehcgttx.html