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 可排列的表实现代码
Nov 13 Javascript
javascript设计模式 接口介绍
Jul 24 Javascript
javascript获取URL参数与参数值的示例代码
Dec 20 Javascript
js保留小数点后几位的写法
Jan 03 Javascript
提交按钮的name='submit'引起的js失效问题及原因
Feb 25 Javascript
js实现简单的可切换选项卡效果
Apr 10 Javascript
JavaScript函数使用的基本教程
Jun 04 Javascript
vuejs2.0实现一个简单的分页示例
Feb 22 Javascript
JavaScript基础之流程控制语句的用法
Aug 31 Javascript
JavaScript 自定义事件之我见
Sep 25 Javascript
JS实现提交表单前的数字及邮箱校检功能
Nov 13 Javascript
JavaScript 获取滚动条位置并将页面滑动到锚点
Feb 08 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/05/13 PHP
PHP中的MYSQL常用函数(php下操作数据库必备)
2010/09/12 PHP
php算法实例分享
2015/07/14 PHP
PHP实现防止表单重复提交功能【基于token验证】
2018/05/24 PHP
jQuery(非HTML5)可编辑表格实现代码
2012/12/11 Javascript
js禁止document element对象选中文本实现代码
2013/03/21 Javascript
Jquery uploadify上传插件使用详解
2016/01/13 Javascript
简述JavaScript提交表单的方式 (Using JavaScript Submit Form)
2016/03/18 Javascript
Jquery对新插入的节点 绑定Click事件失效的解决方法
2016/06/02 Javascript
js中toString()和String()区别详解
2017/03/23 Javascript
JS简单判断滚动条的滚动方向实现方法
2017/04/28 Javascript
mint-ui的search组件在键盘显示搜索按钮的实现方法
2017/10/27 Javascript
vue2.0 路由不显示router-view的解决方法
2018/03/06 Javascript
Vue中父子组件通讯之todolist组件功能开发
2018/05/21 Javascript
微信小程序局部刷新触发整页刷新效果的实现代码
2018/11/21 Javascript
jQuery点击页面其他部分隐藏下拉菜单功能
2018/11/27 jQuery
Vue.js项目实战之多语种网站的功能实现(租车)
2019/08/07 Javascript
解决vue打包后刷新页面报错:Unexpected token
2019/08/27 Javascript
[44:01]2018DOTA2亚洲邀请赛3月30日 小组赛B组 EG VS paiN
2018/03/31 DOTA
python基础教程之数字处理(math)模块详解
2014/03/25 Python
Python获取网页上图片下载地址的方法
2015/03/11 Python
python自带的http模块详解
2016/11/06 Python
itchat接口使用示例
2017/10/23 Python
Python爬取当当、京东、亚马逊图书信息代码实例
2017/12/09 Python
python防止随意修改类属性的实现方法
2019/08/21 Python
pygame实现贪吃蛇游戏(上)
2019/10/29 Python
美国学校校服,儿童和婴儿服装:Cookie’s Kids
2016/10/14 全球购物
如何找出EMP表里面SALARY第N高的employee
2013/12/05 面试题
机关单位动员会主持词
2014/03/20 职场文书
环保建议书500字
2014/05/14 职场文书
学校地质灾害防治方案
2014/06/10 职场文书
广告艺术设计专业自荐书
2014/07/08 职场文书
街道社区活动报告
2015/02/05 职场文书
退休职工欢送会致辞
2015/08/01 职场文书
2019奶茶店创业计划书范本!
2019/07/15 职场文书
win7配置本地ftp服务器的图文教程
2022/08/05 Servers