javascript事件模型实例分析


Posted in Javascript onJanuary 30, 2015

本文实例讲述了javascript事件模型的用法。分享给大家供大家参考。具体分析如下:

一、事件模型

冒泡型事件(Bubbling):事件由叶子节点沿祖先节点一直向上传递到根节点
捕获型事件(Capturing):由DOM树最顶元素一直到最精确的元素,与冒泡型事件相反
DOM标准事件模型:DOM标准既支持冒泡型事件,也支持捕获型事件,可以说是两者的结合体,首先是捕获型,接着冒泡传递

二、事件对象

在IE浏览器中事件对象是window的一个属性,在DOM标准中,event必须作为唯一的参数传给事件处理函数

获得兼容的event 对象:

function(event){ 
  //event 是作为DOM标准的参数传入处理函数 
 event = event ?event : window.event; 
}

在IE中,事件的对象包含在event的srcElement中,而在DOM标准中,对象包含在target属性中
获得兼容的event 对象指向的元素:

var target =event.srcElement ? event.srcElement : event.target ;

前提是,保证event对象已经正确的获取

三、事件监听器

IE下,注册的监听器逆序执行,即后面注册的先执行

element.attachEvent('onclick',observer); //注册监听器
element.detachEvent('onclick',observer) //移除监听器

第一个参数为事件名称,第二个为回调处理函数

DOM标准下:

element.addEventListener('click',observer,useCapture) 
element.removeEventListener('click',observer,useCapture)

第一个参数为事件名称,没有“on”的前缀,第二个参数为回调处理函数,第三个参数说明回调函数是在捕获阶段调用还是冒泡阶段调用,默认true为捕获阶段

四、事件传递

兼容地取消浏览器的事件传递

function someHandler(event){ 
  event = event || window.event; 
  if(event.stopPropagation) //DOM标准 
  event.stopPropagation(); 
  else 
  event.cancelBubble = true; //IE标准 
}

取消事件传递后的默认处理

function someHandler(event){ 
  event = event || window.event; 
  if(event.preventDefault) //DOM标准 
  event. preventDefault (); 
  else 
  event.returnValue = true; //IE标准 
}

希望本文所述对大家的javascript程序设计有所帮助。

Javascript 相关文章推荐
jquery操作select option 的代码小结
Jun 21 Javascript
解读JavaScript中 For, While与递归的用法
May 07 Javascript
For循环中分号隔开的3部分的执行顺序探讨
May 27 Javascript
JavaScript实战之带收放动画效果的导航菜单
Aug 16 Javascript
浅谈JavaScript事件绑定的常用方法及其优缺点分析
Nov 01 Javascript
jQuery Easyui加载表格出错时在表格中间显示自定义的提示内容
Dec 08 Javascript
vue底部加载更多的实例代码
Jun 29 Javascript
angularjs实现对表单输入改变的监控(ng-change和watch两种方式)
Aug 29 Javascript
解决vue.js提交数组时出现数组下标的问题
Nov 05 Javascript
vscode中Vue别名路径提示的实现
Jul 31 Javascript
vuex的使用步骤
Jan 06 Vue.js
cypress测试本地web应用
Jun 01 Javascript
JS是按值传递还是按引用传递
Jan 30 #Javascript
js实现鼠标悬浮给图片加边框的方法
Jan 30 #Javascript
js控制输入框获得和失去焦点时状态显示的方法
Jan 30 #Javascript
使用mouse事件实现简单的鼠标经过特效
Jan 30 #Javascript
js实现屏幕自适应局部代码分享
Jan 30 #Javascript
jQuery弹出框代码封装DialogHelper
Jan 30 #Javascript
jquery中animate的stop()方法作用实例分析
Jan 30 #Javascript
You might like
php下保存远程图片到本地的办法
2010/08/08 PHP
提升PHP性能的21种方法介绍
2013/06/25 PHP
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 2611816 bytes)
2014/11/08 PHP
CodeIgniter生成静态页的方法
2016/05/17 PHP
Jquery网页出现的乱码问题的三种解决方法
2013/06/30 Javascript
jquery mobile实现拨打电话功能的几种方法
2013/08/05 Javascript
jquery $("#variable") 循环改变variable的值示例
2014/02/23 Javascript
jQuery控制cookie过期时间的方法
2015/04/07 Javascript
jquery实现兼容IE8的异步上传文件
2015/06/15 Javascript
javascript获取网页宽高方法汇总
2015/07/19 Javascript
通过XMLHttpRequest和jQuery实现ajax的几种方式
2015/08/28 Javascript
jQuery实现右下角可缩放大小的层完整实例
2016/06/20 Javascript
AngularJS自定义插件实现网站用户引导功能示例
2016/11/07 Javascript
jQuery插件FusionCharts实现的MSBar3D图效果示例【附demo源码】
2017/03/23 jQuery
微信小程序组件 marquee实例详解
2017/06/23 Javascript
NodeJs入门教程之定时器和队列
2019/03/08 NodeJs
vue仿ios列表左划删除
2019/09/26 Javascript
在Python的Django框架中编写错误提示页面
2015/07/22 Python
python中常用的九种预处理方法分享
2016/09/11 Python
200 行python 代码实现 2048 游戏
2018/01/12 Python
python中协程实现TCP连接的实例分析
2018/10/14 Python
python简单验证码识别的实现方法
2019/05/10 Python
Python线上环境使用日志的及配置文件
2019/07/28 Python
CSS3为背景图设置遮罩并解决遮罩样式继承问题
2020/06/22 HTML / CSS
Html5获取高德地图定位天气的方法
2019/12/26 HTML / CSS
阿联酋航空丹麦官方网站:Emirates DK
2019/08/25 全球购物
关于爱情的广播稿
2014/01/16 职场文书
销售主管岗位职责
2014/02/08 职场文书
黄河象教学反思
2014/02/10 职场文书
太太口服液广告词
2014/03/20 职场文书
小学生寒假家长评语
2014/04/16 职场文书
流动人口婚育证明
2014/10/19 职场文书
2014年小学美术工作总结
2014/12/20 职场文书
入党团支部推荐意见
2015/06/02 职场文书
Apache压力测试工具的安装使用
2021/03/31 Servers
Python insert() / append() 用法 Leetcode实战演示
2021/03/31 Python