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的从一个页面跳转到另一个页面的指定位置的实现代码(带平滑移动的效果)
May 24 Javascript
jQuery 源码分析笔记(6) jQuery.data
Jun 08 Javascript
创建公共调用 jQuery Ajax 带返回值
Aug 01 Javascript
js实现文本框支持加减运算的方法
Aug 19 Javascript
JavaScript创建对象的方式小结(4种方式)
Dec 17 Javascript
jQuery原理系列-css选择器的简单实现
Jun 07 Javascript
jQuery插件ajaxFileUpload使用实例解析
Oct 19 Javascript
vue-axios使用详解
May 10 Javascript
微信小程序常用的3种提示弹窗实现详解
Sep 19 Javascript
vue随机验证码组件的封装实现
Feb 19 Javascript
jquery实现手风琴案例
May 04 jQuery
ES2020系列之空值合并运算符 '??'
Jul 22 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开发留言板的CRUD(增,删,改,查)操作
2012/04/19 PHP
使用PHP+AJAX让WordPress动态加载文章的教程
2015/12/11 PHP
Zend Framework自定义Helper类相关注意事项总结
2016/03/14 PHP
php+ajax实现无刷新文件上传功能(ajaxuploadfile)
2018/02/11 PHP
DWR实现模拟Google搜索效果实现原理及代码
2013/01/30 Javascript
js读取配置文件自写
2014/02/11 Javascript
Bootstrap网格系统详解
2016/04/26 Javascript
vue.js入门教程之基础语法小结
2016/09/01 Javascript
Ionic 2 实现列表滑动删除按钮的方法
2017/01/22 Javascript
js实现颜色阶梯渐变效果(Gradient算法)
2017/03/21 Javascript
JS实现二叉查找树的建立以及一些遍历方法实现
2017/04/17 Javascript
angular实现spa单页面应用实例
2017/07/10 Javascript
解析Vue.js中的组件
2018/02/02 Javascript
这应该是最详细的响应式系统讲解了
2019/07/22 Javascript
原生javascript运动函数的封装示例【匀速、抛物线、多属性的运动等】
2020/02/23 Javascript
python实现简单点对点(p2p)聊天
2017/09/13 Python
简单了解python模块概念
2018/01/11 Python
关于Django ForeignKey 反向查询中filter和_set的效率对比详解
2018/12/15 Python
Python实现一个简单的毕业生信息管理系统的示例代码
2020/06/08 Python
python 装饰器的实际作用有哪些
2020/09/07 Python
Onzie官网:美国时尚瑜伽品牌
2019/08/21 全球购物
宿舍使用违章电器检讨书
2014/01/12 职场文书
大学校运会广播稿
2014/02/03 职场文书
《邮票齿孔的故事》教学反思
2014/02/22 职场文书
护士上岗前培训自我鉴定
2014/04/20 职场文书
煤矿安全演讲稿
2014/05/09 职场文书
土地租赁意向书
2014/07/30 职场文书
银行柜员与客户起冲突检讨书
2014/09/27 职场文书
银行转正自我鉴定
2014/09/29 职场文书
企业群众路线教育实践活动心得体会
2014/11/03 职场文书
个性与发展自我评价
2015/03/06 职场文书
十一月早安语录:把心放轻,人生就是一朵自在的云
2019/11/04 职场文书
python中print格式化输出的问题
2021/04/16 Python
JavaScript控制台的更多功能
2021/04/28 Javascript
分享MySQL常用 内核 Debug 几种常见方法
2022/03/17 MySQL
Windows Server 2012 修改远程默认端口3389的方法
2022/04/28 Servers