事件对象的属性和方法

 <body>
    <input type="button" value="按钮" id="btn">
    <script>
        var btn = document.getElementById('btn');
        btn.onclick = function(e) {
            console.log(e)           
        }
    </script>
</body>

e就是事件对象,有浏览器兼容问题,在老版本的IE中获取事件对象方式是window.event
处理事件对象的浏览器兼容性:e=e||window.event

  1. e.eventPhase查看事件触发时所处的阶段。值为1是捕获阶段,值为2是目标阶段,值为3是冒泡阶段
  2. e.target 获取真正触发事件的对象 ,有浏览器兼容问题,在老版本的IE中 用e.srcElement。兼容处理: var target = e.target || e.srcElement;
  3. e.currentTarget事件处理函数所属的对象this
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Document</title>
  <style>
    #box1 {
      width: 300px;
      height: 300px;
      background-color: red;
    }

    #box2 {
      width: 200px;
      height: 200px;
      background-color: green;
    }

    #box3 {
      width: 100px;
      height: 100px;
      background-color: blue;
    }
  </style>
</head>
<body>
  <div id="box1">
    <div id="box2">
      <div id="box3">
      </div>
    </div>
  </div>
  <script>
    var box1 = document.getElementById('box1');
    var box2 = document.getElementById('box2');
    var box3 = document.getElementById('box3'); 
    var array = [box1, box2, box3];
    for (var i = 0; i < array.length; i++) {
      var box = array[i];
      box.onclick = function (e) {
        e = e || window.event;
        // 事件的阶段
        console.log(e.eventPhase);
        // e.target 获取真正触发事件的对象
        var target = e.target || e.srcElement;
        console.log(target);
        // e.curentTarget   和this一样 获取事件处理函数所属的对象
        console.log(e.currentTarget);
        console.log(this);
      }
    }    
  </script>
</body>
</html>

点击蓝色box3返回结果如图
在这里插入图片描述
4. e.type获取事件名称

 <div id="box"></div> 
  <script>
    var box = document.getElementById('box');    
    box.onclick = fn;
    box.onmouseover = fn;
    box.onmouseout = fn;
    
    function fn(e) {
      e = e || window.event;
      switch (e.type) {
        case 'click': 
          console.log('点击box');
          break;
        case 'mouseover': 
          console.log('鼠标经过box');
          break;
        case 'mouseout': 
          console.log('鼠标离开box');
          break;
      }
    }
  </script>
  1. e.preventDefault() 取消默认行为
  2. e.clientX/e.clientY 所有浏览器都支持,窗口位置,浏览器可视区域的位置
  3. e.pageX/e.pageY IE8以前不支持,页面位置
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值