博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
jacascript 事件对象event
阅读量:4542 次
发布时间:2019-06-08

本文共 1994 字,大约阅读时间需要 6 分钟。

  在触发DOM上的某个事件时,会产生一个事件对象 event,这个对象中包含着所有与事件有关的信息。所有浏览器都支持 event 对象,但有兼容性问题。

 

获取事件对象

  一般地,event 对象是事件程序的第一个参数。IE8及以下浏览器不支持;

  另一种方法是直接使用 event 变量,firefox 浏览器不支持;

  获取事件对象的常见兼容写法:

 
 

 

事件类型

  事件有很多类型,事件对象中的 type 属性表示被触发的事件类型;

 
 

 

事件目标

  关于事件目标,共有 currentTarget、target 和 srcElement 这三个属性;

  currentTarget 属性返回事件当前所在的节点,即正在执行的监听函数所绑定的那个节点;IE8及以下浏览器不支持;

  currentTarget 与事件中的 this 指向相同;

  target 属性返回事件的实际目标节点;IE8及以下浏览器不支持;

  srcElement 属性与 target 属性功能一致,返回事件的实际目标节点;firefox 浏览器不支持;

 
        
 

 

事件代理

  由于事件会在冒泡阶段向上传播到父节点,因此可以把子节点的监听函数定义在父节点上,由父节点的监听函数统一处理多个子元素的事件。这种方法叫做事件的代理(delegation),也叫事件委托;

  事件代理应用事件目标的 target 和 srcElement 属性完成。利用事件代理,可以提高性能及降低代码复杂度;

 
        
  • 1
  • 2
  • 3
  • 4
  • 5
 

 

事件冒泡

  事件冒泡是事件流的第三个阶段,通过事件冒泡可以在这个阶段对事件做出响应;

  关于冒泡,事件对象中包含 bubbles、cancelBubble、stopPropagation() 和 stopImmediatePropagation() 这四个相关的属性和方法;

  bubbles 属性返回一个布尔值,表示当前事件是否会冒泡。该属性为只读属性。发生在文档元素上的大部分事件都会冒泡,但 focus、blur 和 scroll 事件不会冒泡。所以,除了这三个事件 bubbles 属性返回 false 外,其他事件该属性都为true;

  stopPropagation() 方法表示取消事件的进一步捕获或冒泡,但无法阻止同一事件的其他监听函数被调用,无返回值。IE8及以下浏览器不支持;

  stopImmediatePropagation() 方法不仅可以取消事件的进一步捕获或冒泡,而且可以阻止同一个事件的其他监听函数被调用,无返回值。IE8及以下浏览器不支持;

 
 

  cancelBubble 属性只能用于阻止冒泡,无法阻止捕获阶段。该值可读写,默认值是false。当设置为 true 时,cancelBubble 可以取消事件冒泡;该属性全浏览器支持,但并不是标准写法;

 
 

 

事件流

  eventPhase 属性返回一个整数值,表示事件目前所处的事件流阶段,IE8及以下浏览器不支持;

  0表示事件没有发生,1表示捕获阶段,2表示目标阶段,3表示冒泡阶段;

取消默认行为

  关于取消默认行为的属性包括 cancelable、defaultPrevented、preventDefault() 和 returnValue ;

  cancelable 属性返回一个布尔值,表示事件是否可以取消。该属性为只读属性。返回true时,表示可以取消。否则,表示不可取消;IE8及以下浏览器不支持;

  defaultPrevented 属性表示默认行为是否被阻止,返回 true 时表示被阻止,返回 false 时,表示未被阻止;IE8及以下浏览器不支持;

 
 

 

  preventDefault() 方法取消浏览器对当前事件的默认行为,无返回值;IE8及以下浏览器不支持;

 
 

 

  returnValue 属性可读写,默认值是true,但将其设置为 false 就可以取消事件的默认行为,与 preventDefault() 方法的作用相同;firefox 和 IE9及以上浏览器不支持;

  兼容性写法:

 
 

 

转载于:https://www.cnblogs.com/yanglang/p/6860062.html

你可能感兴趣的文章
多项式累加
查看>>
剑指offer(18)二叉搜索树的后续遍历
查看>>
微信小程序一笔记账开发进度四
查看>>
bzoj 1070 费用流
查看>>
201671010139 徐楠 第四周总结
查看>>
JAVA链表简单实现
查看>>
[转载]T-SQL(MSSQL)语句查询执行顺序
查看>>
SignalR 行实时通信最大连接数
查看>>
开发进度6
查看>>
php方法重载
查看>>
三次握手和四次挥手(二)
查看>>
MySQL中的索引
查看>>
Android开发之手势滑动(滑动手势监听)详解
查看>>
switch
查看>>
HTTP错误code大全
查看>>
PAT Advanced Level 1043
查看>>
决策树基础
查看>>
献给程序员之如何与陌生人交谈
查看>>
Python之登录接口
查看>>
【arc074E】RGB Sequence
查看>>