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 相关文章推荐
JS实现点击图片在当前页面放大并可关闭的漂亮效果
Oct 18 Javascript
一个js过滤空格的小函数
Oct 10 Javascript
基于JavaScript创建动态Dom
Dec 08 Javascript
基于JS如何实现类似QQ好友头像hover时显示资料卡的效果(推荐)
Jun 09 Javascript
Javascript中的数组常用方法解析
Jun 17 Javascript
让DIV的滚动条自动滚动到最底部的3种方法(推荐)
Sep 24 Javascript
vue使用mint-ui实现下拉刷新和无限滚动的示例代码
Nov 06 Javascript
vue-cli3.0 特性解读
Apr 22 Javascript
在vue项目中使用Jquery-contextmenu插件的步骤讲解
Jan 27 jQuery
微信小程序学习笔记之登录API与获取用户信息操作图文详解
Mar 29 Javascript
Vue路由权限控制解析
Nov 09 Javascript
前端如何实现动画过渡效果
Feb 05 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的相似度计算函数:levenshtein的使用介绍
2013/04/15 PHP
浅析php创建者模式
2014/11/25 PHP
PHP实现简单汉字验证码
2015/07/28 PHP
jQuery中文入门指南,翻译加实例,jQuery的起点教程
2007/01/13 Javascript
List all the Databases on a SQL Server
2007/06/21 Javascript
ASP中进行HTML数据及JS数据编码函数
2009/11/11 Javascript
js 浏览本地文件夹系统示例代码
2013/10/24 Javascript
js中switch case循环实例代码
2013/12/30 Javascript
JavaScript图像延迟加载库Echo.js
2016/04/05 Javascript
JavaScript实现的选择排序算法实例分析
2017/04/14 Javascript
基于JavaScript 性能优化技巧心得(分享)
2017/12/11 Javascript
JS排序算法之希尔排序与快速排序实现方法
2017/12/12 Javascript
layer.open 获取不到表单信息的解决方法
2019/09/26 Javascript
微信小程序canvas分享海报功能
2019/10/31 Javascript
JavaScript数组排序的六种常见算法总结
2020/08/18 Javascript
[33:42]LGD vs OG 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
python检测某个变量是否有定义的方法
2015/05/20 Python
Python计算两个日期相差天数的方法示例
2017/05/23 Python
Django 如何获取前端发送的头文件详解(推荐)
2017/08/15 Python
Python基于matplotlib画箱体图检验异常值操作示例【附xls数据文件下载】
2019/01/07 Python
浅析Python 引号、注释、字符串
2019/07/25 Python
wxpython实现按钮切换界面的方法
2019/11/19 Python
完美解决Django2.0中models下的ForeignKey()问题
2020/05/19 Python
Python实例方法、类方法、静态方法区别详解
2020/09/05 Python
如何利用Python matplotlib绘制雷达图
2020/12/21 Python
使用Python快速打开一个百万行级别的超大Excel文件的方法
2021/03/02 Python
css3实现圆锥渐变conic-gradient效果
2020/02/12 HTML / CSS
全球知名的珠宝首饰品牌:Kay Jewelers
2018/02/11 全球购物
建筑人员岗位职责
2013/12/25 职场文书
《陶罐和铁罐》教学反思
2014/02/19 职场文书
小学数学教学经验交流材料
2014/05/22 职场文书
门卫岗位职责说明书
2014/08/18 职场文书
2019数学教师下学期工作总结
2019/06/27 职场文书
HTML中的表格元素介绍
2022/02/28 HTML / CSS
解析探秘fescar分布式事务实现原理
2022/02/28 Java/Android
公历12个月名称的由来
2022/04/12 杂记