事件流详解

作者: 命运齿轮1 | 来源:发表于2018-04-14 08:48 被阅读0次

title: 事件流

  • JS事件流最早要从IE和网景公司的浏览器大战说起,IE提出的是冒泡流,而网景提出的是捕获流,后来在W3C组织的统一之下,JS支持了冒泡流和捕获流,但是目前低版本的IE浏览器还是只能支持冒泡流(IE6,IE7,IE8均只支持冒泡流),所以为了能够兼容更多的浏览器,建议大家使用冒泡流。

事件作用范围

    //css

    <style type="text/css">
        #wrap {
          width: 200px;
          height: 200px;
          background: orange;
        }
        #content {
          position: relative;
          top: 50px;
          left: 50px;
          width: 100px;
          height: 100px;
          background: #eeddff;
        }
        #inner {
          position: relative;
          top: 25px;
          left:25px;
          width: 50px;
          height: 50px;
          background: #44ddff;
        }
    </style>


    //html
    <div id="wrap">
        <div id="content">
            <div id="inner"></div>
        </div>
    </div>

    //js
    <script>
        var wrap = document.getElementById('wrap');
        wrap.addEventListener('click',function(){
            alert('789');
        },false);
    </script>

    //当点击warp块(包括被子元素的部分)任何一部分时,都会弹出789。这是相当于3个click作用在其上。
试验

css html同上,

    //script
    var wrap = document.getElementById('wrap');
    var content = document.getElementById('content');
    var inner = document.getElementById('inner');

    wrap.addEventListener('click',function(){
        alert('789');
    },false);
    content.addEventListener('click',function(){
        alert('456');
    },false);
    inner.addEventListener('click',function(){
        alert('123');
    },false);

这样执行的话,就会先弹出123,然后弹出456,最后弹出789。

DOM事件流

css html 同上

        var wrap = document.getElementById('wrap');
        var content = document.getElementById('content');
        var inner = document.getElementById('inner');
        wrap.addEventListener('click',function(){
          alert('wrap');
        },true);
        content.addEventListener('click',function(){
          alert('content');
        },true);
        inner.addEventListener('click',function(){
          alert('inner');
        },true);

        wrap.addEventListener('click',function(){
          alert('wrap11');
        },false);
        content.addEventListener('click',function(){
          alert('content11');
        },false);
        inner.addEventListener('click',function(){
          alert('inner11');
        },false);

这样点击中心执行 会先弹出wrap 在弹出content 后弹出inner 然后弹出inner11,content11,wrap11。
按上面的例子为,先调用冒泡阶段的事件处理程序,再调用捕获阶段的事件处理程序。

相关文章

  • 事件流详解

    title: 事件流 JS事件流最早要从IE和网景公司的浏览器大战说起,IE提出的是冒泡流,而网景提出的是捕获流...

  • JavaScript的事件机制详解

    【js事件详解】js事件封装函数,js跨浏览器事件处理机制 一、事件流 事件流描述的是从页面中接受事件的顺序。IE...

  • MotionEvent详解

    Android MotionEvent 详解,之前用了两篇文章 事件分发机制原理 和 事件分发机制详解 来讲解事件...

  • 自定义View进阶《十四》——MotionEvent详解

    Android MotionEvent 详解,之前用了两篇文章 事件分发机制原理 和 事件分发机制详解来讲解事件分...

  • iOS 事件以及手势的处理

    iOS 事件以及手势的处理 首先引用深入浅出iOS事件机制,iOS触摸事件处理详解,详解iOS触摸事件与手势识别三...

  • JS写事件代理

    js中的事件委托或是事件代理详解

  • 手写事件模型及事件代理/委托

    事件流:事件流所描述的就是从页面中接受事件的顺序。IE:IE事件流是事件冒泡流;Netscape事件流是事件捕获流...

  • JavaScript事件探秘

    一、事件流 事件流描述的是从页面中接收事件的顺序。IE的事件流是事件冒泡流,而Netscape的事件流是事件捕获流...

  • 事件

    1. 事件 IE的事件流是事件冒泡流Netscape是的事件流是事件捕获流 DOM事件流 :规定事件包括三个阶段:...

  • Android 事件分发机制详解

    第97期:Android 事件分发机制详解 diycode 社区布道奖的三个文章 Android 事件分发机制详解...

网友评论

    本文标题:事件流详解

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