美文网首页
事件流 事件监听 (03)

事件流 事件监听 (03)

作者: BJ呀呀呀 | 来源:发表于2021-05-25 11:41 被阅读0次

事件流

从页面接受事件的顺序, 分为 捕获与冒泡

  • 1冒泡 从内往外 (事件的传递)
  • 2捕获 从外往内 (body是外)

事件流的三个阶段

冒泡阶段-->目标阶段-->捕获

阻止默认行为

(那些会有默认行为eg: a标签,跳转的默认行为 from默认提交,默认重置行为)

 var e = evt || window.event;
 if (e.preventDefault) {
 e.preventDefault();//googel
 } else {
 e.returnValue = false;//ie
 }

列子:

 <!-- 方式一 -->
    <!-- <a href="https://www.baidu.com/" onclick="return false">去百度</a> -->
    <a href="https://www.baidu.com/">去百度</a>
    <script>
        var oA=document.querySelector("a");
       //方式二:
        // oA.onclick=function(){
        //     return false
        // }

    //方式三
      oA.onclick=function(evt){
            var e=evt||window.event;
            if(e.preventDefault){
                e.preventDefault()
            }else{
                e.returnValue=false;
            }
        }
    </script>

停止事件冒泡(兼容写法)

var e = evt || window.event;
 if (e.stopPropagation) {
  e.stopPropagation();//googel  重点
 } else {
e.cancelBubble = true;//ie
 }

捕获

添加事件监听与移除事件监听

addEventListener("事件类型","函数",true) 捕获
  • 1.第3个参数如果是一个boolean值,true捕获,fasle冒泡, 默认冒泡
  • 2.第3个参数可以是一个对象 {capture:true,once:true} once点击一次
removeEventListener("事件类型","函数",true)

addEventListener和removeEventListener 默认是冒泡机制

注:
    1. addEventListener和removeEventListener 它操作的函数必须是同一个
  • 2.如果添加的是捕获,移除也要是捕获,添加的是冒泡,移除也要是冒泡

事件监听的兼容写法:

oEle:给谁添加事件 node
type:事件类型
callback:回调函数
capture:是否捕获

function addEvent(oEle, type, callback, capture) {
  if (oEle.addEventListener) {
       oEle.addEventListener(type, callback, capture)
   } else {
        //ie
      oEle.attachEvent("on" + type, callback);
  }
 }
//移除事件监听
 function removeEvent(oEle, type, callback, capture) {
   if (oEle.removeEventListener) {
      oEle.removeEventListener(type, callback, capture)
} else {
   oEle.detachEvent("on" + type, callback);
   }
}

offset三大家族

offsetParent 找到带有定位的 父元素,如果父级们都没有,就默认到body
offsetLeft,offsetTop 到带有定位父元素的 距离,如果父级们都没有,就默认到body的距离
offsetHeight,offsetWidth 获取自身元素的高= 高+boder+padding

相关文章

  • 事件流 事件监听 (03)

    事件流 从页面接受事件的顺序, 分为 捕获与冒泡 1冒泡 从内往外 (事件的传递) 2捕获 从外往内 (bod...

  • 12.4默写

    事件流 事件监听 事件委托

  • 事件流及事件监听

    事件 含义JavaScript和HTML的交互是通过事件实现的。JavaScript采用异步事件驱动编程模型,当文...

  • js事件深入学习

    JavaScript的事件机制包含,事件绑定、事件监听、事件委托(事件代理)等 js中的事件流 ① .冒泡:当下级...

  • Android之常用Listener监听器

    常用Listener监听器 ListView事件监听: EditText事件监听: RadioGroup事件监听:...

  • js day22

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

  • 2021-09-22 GUI(事件监听机制)

    事件监听机制组成事件源(组件)事件(Event)监听器(Listener)事件处理(引发事件后处理方式) 事件监听...

  • unity 委托事件

    定义委托及事件 实现事件监听+=(事件取消监听为-=)

  • 事件委托

    概念 事件委托,将本来应该绑定到子元素的响应事件委托给父元素,让父元素担当事件监听的职务。 事件流 事件委托是基于...

  • Web笔记-Listener

    事件源、事件、监听器 事件源:发生事件的对象 事件:事件封装了事件源,方便监听器的某个方法获取到事件源对象 监听器...

网友评论

      本文标题:事件流 事件监听 (03)

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