美文网首页
第十五章 事件流

第十五章 事件流

作者: 扶光_ | 来源:发表于2021-05-24 14:58 被阅读0次

什么是事件流?
事件流描述的就是页面中接收事件的顺序。
坦白的说也就是事件在页面中的传播顺序

事件流分为两种1.是事件冒泡 2.事件捕获

一,事件冒泡(0级和二级都可以)

addEventListener(事件名称,事件函数,true/false)
true:在捕获阶段执行
false:在冒泡阶段执行

像泡泡一样逐层往上触发
特点必须是同类型的事件进行传播

事件冒泡
 <div>
      <p>
          <img src="./img/1.jpg" alt="" >
      </p>
  </div>
<script>
 var div = document.getElementsByTagName("div")[0];
   var op = document.getElementsByTagName("P")[0];
   var oimg = document.getElementsByTagName("img")[0];

   //绑定事件
   div.addEventListener("click",function(){
        alert("div")
   },false)

   op.addEventListener("click",function(){
        alert("p")
   },false)

   oimg.addEventListener("click",function(){
        alert("img")
   },false)
</script>
冒泡排序
当我们点击图片的时候,他弹窗弹出的顺序依次是img>p>div

二,事件捕获

自上而下执行代码
把addEventListener里面参数设置为true

事件捕获
 <div>
      <p>
          <img src="./img/1.jpg" alt="" >
      </p>
  </div>
<script>
 var div = document.getElementsByTagName("div")[0];
   var op = document.getElementsByTagName("P")[0];
   var oimg = document.getElementsByTagName("img")[0];

   //绑定事件
   div.addEventListener("click",function(){
        alert("div")
   },true)

   op.addEventListener("click",function(){
        alert("p")
   },true)

   oimg.addEventListener("click",function(){
        alert("img")
   },true)
</script>

执行顺序是:div>p>img

三,如果在事件传播中,同时出现冒泡和捕获 ,那么执行顺序是什么呢

如 我们把中间的p标签设置为捕获 其他两个为冒泡 然后控制台输出一下

 <div>
      <p>
          <img src="./img/1.jpg" alt="" >
      </p>
  </div>
<script>
 var div = document.getElementsByTagName("div")[0];
   var op = document.getElementsByTagName("P")[0];
   var oimg = document.getElementsByTagName("img")[0];

   //绑定事件
   div.addEventListener("click",function(){
      console.log("div");
   },false)                                   //事件冒泡

   op.addEventListener("click",function(){
   console.log("p"); 
   },true)                                    //事件捕获

   oimg.addEventListener("click",function(){
       console.log("img");
   },fasle)                                  //事件冒泡
</script>
同时出现

因为事件冒泡和时间捕获同时出现的执行顺序是
**捕获>事件源>冒泡 **


一, event事件对象

指的是与特定事件先关且包含事件详细信息的对象
坦白的说:就是将event当成一个事件处理程序的参数,调用事件时,传入进去,使用 它的方法
写法:

    btn[0].addEventListener("click",function(event){   //将event事件当做参数传入
        event=event||window.event//兼容写法 
        alert("第一个点击事件")
       },false)

然后下面来写几种event事件的一些方法及需要注意的兼容性问题

1.阻止事件冒泡 stopPropagation()

兼容:cancelBubble代替stopPropagation()

        if(event.stopPropagation()){
            event.stopPropagation()
        }else{
             event.cancelBubble = true;
        }

2.preventDefault() 取消默认操作 如a标签的跳转页面

兼容:returnValue值为false

       if(event.preventDefault()){
            event.preventDefault()
        }else{
            event.returnValue=false 
        }

3. stopImmeditaePropagation() 停止当前进程 也是阻止事件

和第一个不同点是: 还可以把这个元素绑定的同类型事件也进行阻止


二,event事件属性

属性和方法怎么取分呢 在于是否有()

1. event.type属性 获取事件发生的类型

 <script>
        document.addEventListener("click",function(event){
            event = event || window.event   //IE兼容写法
            console.log(event.type)
        },false)
    </script>
event.type

这个属性会获取事件的类型

2. event.target属性 返回事件的目标节点(谁来触发的)

target的兼容:
target = event.target || event.srcElement

如我们给图片绑定一个点击事件 然后返回target是怎么样

<body>
    <img src="./img/1.jpg" width="100px" height="100px" alt="">
    <script>
        var img = document.getElementsByTagName("img")[0];

        img.addEventListener("click",function(event){
            event = event || window.event
            target = event.target || event.srcElement
            console.log(target);
        },false)
    </script>
</body>
event.target

三,event鼠标事件属性

  • 1.event.screenX
    参考对象是屏幕

  • 2.event.clientX
    参考对象浏览器窗口

  • 3.event.pageX
    参考对象基于文档

<script>
        document.addEventListener("click",function(){
            event = event || window.event
            //参考对象是屏幕
            console.log(event.screenX);// Y
            //参考对象浏览器窗口
            console.log(event.clientX);//Y
            //参考对象基于文档 
            console.log(event.pageX);//Y
          
        },false)

当我们个文档一个点击事件 ,当点击文档任意位置出现的值

鼠标事件
注意:现在所呈现的值是一样的 但page是基于内容多少来进行的 和client是不一样的

四,event键盘事件

  • keyCode 获取键码值
  <script>
        document.addEventListener("keydown",function(){
            event = event || window.event
            console.log(event.keyCode);
          
        },false)
 </script>

当我们摁下enter键看看log出来的是什么


keyCode

会输出对应的键码值
如Enter的键码值是13,空格的键码值是32

相关文章

  • JavaScript 高级程序设计(第13章 事件)

    第13章 事件 1. 事件流 事件流描述的是从页面中接收事件的顺序。 (1) 事件冒泡 IE 的事件流叫做事件冒泡...

  • js day22

    一、事件流 1.绑定事件 1)内联事件 //无限制第为元素绑定事件 2)事件监听 //无限制第为元素绑定事件 二、...

  • 第十五章 事件流

    什么是事件流?事件流描述的就是页面中接收事件的顺序。坦白的说也就是事件在页面中的传播顺序 事件流分为两种1.是事件...

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

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

  • JavaScript事件探秘

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

  • 事件

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

  • .DAY2~生活工作反思自己━玩会离

    222信息流为事件流服务,招满莫空间,信息流为事件流服务,赵曼空间。留有空间那为自己服务,今天那是学习时间管理的第...

  • JavaScript事件捕获冒泡与捕获

    事件流 JavaScript中,事件流指的是DOM事件流。 概念 事件的传播过程即DOM事件流。 事件对象在 DO...

  • 事件流and事件处理程序

    事件流 什么是事件流 事件流描述得是从页面中接收事件的顺序 IE的事件流是事件冒泡流 Netscape Commu...

  • JS--事件(一)

    事件流 事件流描述的是从页面中接受事件的顺序,在IE中的事件流是事件冒泡,在Netscape的事件流是事件捕获流。...

网友评论

      本文标题:第十五章 事件流

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