zoukankan      html  css  js  c++  java
  • 事件

     

    事件流:包括三个阶段:事件捕获阶段、处于目标阶段、事件冒泡阶段;

                   1、捕获阶段:事件从文档的根节点流向目标对象节点。途中经过各个层次的DOM节点,并在各节点上触发捕获事件,直到到达事件的目标节点。

                                    在捕获阶段,目标元素不会接受事件,意味着事件从document到目标元素就停止;

                    2、处于目标阶段:事件在目标节点上被触发;

                    3、冒泡阶段:事件又传播回文档;它会随着DOM树一层层向上冒泡,回溯到根节点。

    事件处理:addEventListener()  removeEventListener()  接收3个参数  要处理的事件名、事件处理程序的函数、布尔值

                      布尔值:true    表示在事件捕获阶段调用事件处理程序 ;

                                    false   表示在冒泡阶段调用事件处理程序;

                      例如:

    <div class="box">
        <button>请点击按钮</button>
    </div>
    
    <script>
        var event=function(){
            alert(this.tagName);
        }
        document.getElementsByClassName('box')[0].addEventListener("click",event,false);          //事件名
        document.getElementsByTagName('body')[0].addEventListener("click",event,false);
        document.getElementsByClassName('box')[0].removeEventListener("click",event,false);    
    </script>
    

     IE事件处理程序:attachEvent()   detachEvent()  接收2个参数 事件处理名称和事件处理函数,因为IE8及更早的浏览器只支持事件冒泡;

        document.getElementsByClassName('box')[0].attachEvent("onclick",event);     //事件名   
        document.getElementsByTagName('body')[0].attachEvent("onclick",event);
    

    区别:1、参数不一样;   2、事件名称不一样,普通的直接click; IE是onclick    

     兼容的写法:

    var addEvent = (function(){
            if(document.addEventListener){
                return function(element, type,callback){
                    element.addEventListener(type,callback,false);
                }
            }else{
                return function(element, type,callback){
                    element.attachEvent('on' + type,callback);      //注意添加on
                }
            }
    })();
    

    事件对象:

    //IE是把event事件对象作为全局对象window的一个属性;可以使用event或window.event来访问;
    //FireFox和Chrome等主流浏览器是通过把【事件对象】作为【事件响应函数】的【参数】进入传入的;
    //兼容性的写法示例:
    domElement.onclick = function( e ){
          e = e || window.event;//或(||)书写顺序有讲究,不能随意换
    }
    

    事件对象上有属性和方法:

           w3c下事件对象有很多属性和方法,cancleable  是否可以取消事件的默认行为,只有设置为true的事件才可以是有preventDefault()来取消默认行为。

           事件对象的target是事件的实际目标,  w3c:target       IE:srcElement

           type:被触发的事件名    click   w3c和ie一样;

     阻止冒泡:           W3c:event.stopPropagation();
                                   IE:    cancelBubble = true;

    阻止默认行为:     W3C: event.preventDefault();

                                   IE :  window.event.returnValue = false;

            

  • 相关阅读:
    Tomcat造成404
    ajax缺少@ResponseBody注解前台404,业务可以运行
    几种常见的Runtime Exception
    SQL注入通俗讲解
    MYSQL数据库导入大数据量sql文件失败的解决方案
    css选择器
    http端口
    基础算法之最大子列求和问题
    基础算法之链表逆序
    Prolog&Epilog
  • 原文地址:https://www.cnblogs.com/yongyang/p/8900495.html
Copyright © 2011-2022 走看看