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.ui.dialog 增加“自动记住关闭时的位置”的功能
Nov 24 Javascript
javascript页面动态显示时间变化示例代码
Dec 18 Javascript
javascript搜索框效果实现方法
May 14 Javascript
JavaScript保留关键字汇总
Dec 01 Javascript
第九章之路径分页标签与徽章组件
Apr 25 Javascript
浅谈JavaScript 执行环境、作用域及垃圾回收
May 31 Javascript
Ionic+AngularJS实现登录和注册带验证功能
Feb 09 Javascript
详解Angular.js数据绑定时自动转义html标签及内容
Mar 30 Javascript
CentOS环境中MySQL修改root密码方法
Jan 07 Javascript
微信小程序中为什么使用var that=this
Aug 27 Javascript
vue基于better-scroll仿京东分类列表
Jun 30 Javascript
uniapp开发小程序实现滑动页面控制元素的显示和隐藏效果
Dec 10 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全概率运算函数(优化版) Webgame开发必备
2011/07/04 PHP
php启用sphinx全文搜索的实现方法
2014/12/24 PHP
PHP中捕获超时事件的方法实例
2015/02/12 PHP
php视频拍照上传头像功能实现代码分享
2015/10/08 PHP
PHP PDOStatement::fetchColumn讲解
2019/01/31 PHP
Laravel 解决419错误 -ajax请求错误的问题(CSRF验证)
2019/10/25 PHP
js 小贴士一星期合集
2010/04/07 Javascript
jquery1.83 之前所有与异步列队相关的模块详细介绍
2012/11/13 Javascript
js实现获取焦点后光标在字符串后
2014/09/17 Javascript
JavaScript中实现sprintf、printf函数
2015/01/27 Javascript
js实现动画特效的文字链接鼠标悬停提示的方法
2015/03/02 Javascript
$.extend 的一个小问题
2015/06/18 Javascript
JavaScript实现上下浮动的窗口效果代码
2015/10/12 Javascript
Sublime Text 3常用插件及安装方法
2015/12/16 Javascript
关于在vue-cli中使用微信自动登录和分享的实例
2017/06/22 Javascript
Vue单页式应用(Hash模式下)实现微信分享的实例
2017/07/21 Javascript
js实现文件上传功能 后台使用MultipartFile
2018/09/08 Javascript
用npm-run实现自动化任务的方法示例
2019/01/14 Javascript
webpack 如何解析代码模块路径的实现
2019/09/04 Javascript
一行JavaScript代码如何实现瀑布流布局
2020/12/11 Javascript
python的id()函数解密过程
2012/12/25 Python
python Django批量导入数据
2016/03/25 Python
python中dir()与__dict__属性的区别浅析
2018/12/10 Python
Python3 读取Word文件方式
2020/02/13 Python
Python读取表格类型文件代码实例
2020/02/17 Python
jupyter notebook读取/导出文件/图片实例
2020/04/16 Python
地球上最先进的胡子和头发修剪器:Bevel
2018/01/23 全球购物
Notino希腊:购买香水和美容产品
2019/07/25 全球购物
英国名牌男装店:Standout
2021/02/17 全球购物
销售员自我评价怎么写
2013/09/19 职场文书
小学一年级学生评语
2014/04/22 职场文书
森林防火标语
2014/06/23 职场文书
俄语专业毕业生求职信
2014/07/12 职场文书
上帝也疯狂观后感
2015/06/09 职场文书
2019班干部竞选演讲稿范本!
2019/07/08 职场文书
vue项目多环境配置(.env)的实现
2021/07/21 Vue.js