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 相关文章推荐
对字符串进行HTML编码和解码的JavaScript函数
Feb 01 Javascript
最简单的js图片切换效果实现代码
Sep 24 Javascript
jQuery 在光标定位的地方插入文字的插件
May 10 Javascript
吐槽一下我所了解的Node.js
Oct 08 Javascript
jQuery制作简单柱状图实例
Jan 28 Javascript
浅谈JavaScript for循环 闭包
Jun 22 Javascript
Angular2实现的秒表及改良版示例
May 10 Javascript
angular多语言配置详解
May 16 Javascript
JS实现水平遍历和嵌套递归操作示例
Aug 15 Javascript
JavaScript设计模型Iterator实例解析
Jan 22 Javascript
JS时间戳与日期格式互相转换的简单方法示例
Jan 30 Javascript
使用vue判断当前环境是安卓还是IOS
Apr 12 Vue.js
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中的foreach问题
2013/06/30 PHP
PHP开发中常见的安全问题详解和解决方法(如Sql注入、CSRF、Xss、CC等)
2014/04/21 PHP
微信access_token的获取开发示例
2015/04/16 PHP
php中替换字符串函数strtr()和str_repalce()的用法与区别
2016/11/25 PHP
php基于环形链表解决约瑟夫环问题示例
2017/11/07 PHP
jQuery中文入门指南,翻译加实例,jQuery的起点教程
2007/01/13 Javascript
js 文本滚动效果的实例代码
2013/08/17 Javascript
Js中的onblur和onfocus事件应用介绍
2013/08/27 Javascript
简单的代码实现jquery定时器
2013/11/17 Javascript
各浏览器对document.getElementById等方法的实现差异解析
2013/12/05 Javascript
全面解析Bootstrap图片轮播效果
2015/12/03 Javascript
js获取所有checkbox的值的简单实例
2016/05/30 Javascript
AngularJS中$apply方法和$watch方法用法总结
2016/12/13 Javascript
深入理解Javascript箭头函数中的this
2017/02/13 Javascript
JavaScript之promise_动力节点Java学院整理
2017/07/03 Javascript
JS实现简单表格排序操作示例
2017/10/07 Javascript
vue一个页面实现音乐播放器的示例
2018/02/06 Javascript
vue项目打包上传github并制作预览链接(pages)
2019/04/19 Javascript
详解Vue、element-ui、axios实现省市区三级联动
2019/05/07 Javascript
在Python3中使用asyncio库进行快速数据抓取的教程
2015/04/02 Python
举例讲解Python中is和id的用法
2015/04/03 Python
python批量提取word内信息
2015/08/09 Python
python决策树之C4.5算法详解
2017/12/20 Python
对python pandas读取剪贴板内容的方法详解
2019/01/24 Python
Python判断变量是否是None写法代码实例
2020/10/09 Python
如何使用Django Admin管理后台导入CSV
2020/11/06 Python
Django搭建项目实战与避坑细节详解
2020/12/06 Python
用HTML5中的Canvas结合公式绘制粒子运动的教程
2015/05/08 HTML / CSS
澳大利亚潮流尖端的快时尚品牌:Cotton On
2016/09/26 全球购物
美体小铺瑞典官方网站:The Body Shop瑞典
2018/01/27 全球购物
C语言笔试集
2012/07/24 面试题
小学教师年度个人总结
2015/02/05 职场文书
严以律己学习心得体会
2016/01/13 职场文书
Redis安装使用RedisJSON模块的方法
2022/03/23 Redis
JavaScript中reduce()的用法
2022/05/11 Javascript
Python 操作pdf pdfplumber读取PDF写入Exce
2022/08/14 Python