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 相关文章推荐
在JavaScript中通过URL传递汉字的方法
Apr 09 Javascript
JQuery 将元素显示在屏幕的中央的代码
Feb 27 Javascript
js 优化次数过多的循环 考虑到性能问题
Mar 05 Javascript
jquery.Jwin.js 基于jquery的弹出层插件代码
May 23 Javascript
Jquery绑定事件(bind和live的区别介绍)
Aug 23 Javascript
jquery插件star-rating.js实现星级评分特效
Apr 15 Javascript
跟我学习javascript的for循环和for...in循环
Nov 18 Javascript
正则表达式优化JSON字符串的技巧
Dec 24 Javascript
Javascript自执行匿名函数(function() { })()的原理浅析
May 15 Javascript
vue升级之路之vue-router的使用教程
Aug 14 Javascript
QRCode.js二维码生成并能长按识别
Oct 16 Javascript
记一次vue-webpack项目优化实践详解
Feb 17 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
消息持续发送的完整例子
2006/10/09 PHP
IIS6+PHP5+MySQL5+Zend Optimizer+phpMyAdmin安装配置图文教程 2009年
2009/06/08 PHP
CentOS6.5 编译安装lnmp环境
2014/12/21 PHP
php判断当前用户已在别处登录的方法
2015/01/06 PHP
PHP使用GETDATE获取当前日期时间作为一个关联数组的方法
2015/03/19 PHP
php+ajax无刷新分页实例详解
2015/12/07 PHP
php操作access数据库的方法详解
2017/02/22 PHP
PHP微信支付结果通知与回调策略分析
2019/01/10 PHP
javascript深入理解js闭包
2010/07/03 Javascript
圣诞节Merry Christmas给博客添加浪漫的下雪效果基于jquery实现
2012/12/27 Javascript
jquery ajax提交整个表单元素的快捷办法
2013/03/27 Javascript
jquery $.fn $.fx是什么意思有什么用
2013/11/04 Javascript
收集json解析的四种方法分享
2014/01/17 Javascript
JavaScript原型链示例分享
2014/01/26 Javascript
jQuery中map函数的两种方式
2017/04/07 jQuery
jQuery extend()详解及简单实例
2017/05/06 jQuery
JS实现微信里判断页面是否被分享成功的方法
2017/06/06 Javascript
微信小程序商品详情页的底部弹出框效果
2020/11/16 Javascript
vue实现可视化可拖放的自定义表单的示例代码
2019/03/20 Javascript
three.js显示中文字体与tween应用详析
2021/01/04 Javascript
[10:49]2014国际邀请赛 叨叨刀塔第二期为真正的电竞喝彩
2014/07/21 DOTA
python 正则式 概述及常用字符
2009/05/07 Python
Cython 三分钟入门教程
2009/09/17 Python
Python简单实现两个任意字符串乘积的方法示例
2018/04/12 Python
python 实现在txt指定行追加文本的方法
2018/04/29 Python
selenium+python截图不成功的解决方法
2019/01/30 Python
Pandas中两个dataframe的交集和差集的示例代码
2020/12/13 Python
Marmot土拨鼠官网:美国专业户外运动品牌
2018/01/11 全球购物
关于VPN
2012/06/10 面试题
系统管理员的职责包括那些?管理的对象是什么?
2013/01/18 面试题
晨会主持词
2014/03/17 职场文书
教师节学生演讲稿
2014/09/03 职场文书
培训计划通知
2015/07/15 职场文书
2015年学校消防安全工作总结
2015/10/14 职场文书
Python使用MapReduce进行简单的销售统计
2022/04/22 Python
解决spring.thymeleaf.cache=false不起作用的问题
2022/06/10 Java/Android