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 相关文章推荐
不用ajax实现点击文字即可编辑的方法
Dec 16 Javascript
JavaScript 继承详解(四)
Jul 13 Javascript
Jqgrid设置全选(选择)及获取选择行的值示例代码
Dec 28 Javascript
JQuery中$(document)是什么意思有什么作用
Jul 21 Javascript
javascript实现继承的简单实例
Jul 26 Javascript
基于JavaScript实现鼠标悬浮弹出跟随鼠标移动的带箭头的信息层
Jan 18 Javascript
简单三步实现报表页面集成天气
Dec 15 Javascript
JS正则表达式验证密码格式的集中情况总结
Feb 23 Javascript
深入浅析Vue全局组件与局部组件的区别
Jun 15 Javascript
新手入门带你学习JavaScript引擎运行原理
Jun 24 Javascript
vue-router为激活的路由设置样式操作
Jul 18 Javascript
js实现拖拽元素选择和删除
Aug 25 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/26 PHP
joomla组件开发入门教程
2016/05/04 PHP
thinkPHP js文件中U方法不被解析问题的解决方法
2016/12/05 PHP
一个js的tab切换效果代码[代码分离]
2010/04/11 Javascript
JS下高效拼装字符串的几种方法比较与测试代码
2010/04/15 Javascript
jquery append()方法与html()方法的区别及使用介绍
2014/08/01 Javascript
jQuery简单实现网页选项卡特效
2014/11/24 Javascript
推荐10 款 SVG 动画的 JavaScript 库
2015/03/24 Javascript
详细解密jsonp跨域请求
2015/04/15 Javascript
JavaScript中实现无缝滚动、分享到侧边栏实例代码
2016/04/06 Javascript
nodejs加密Crypto的实例代码
2016/07/07 NodeJs
浅谈vue单一组件下动态修改数据时的全部重渲染
2018/03/01 Javascript
vue 下列表侧滑操作实例代码详解
2018/07/24 Javascript
使用imba.io框架得到比 vue 快50倍的性能基准
2019/06/17 Javascript
Python标准库os.path包、glob包使用实例
2014/11/25 Python
python中使用正则表达式的连接符示例代码
2017/10/10 Python
简单实现python收发邮件功能
2018/01/05 Python
Python3爬楼梯算法示例
2019/03/04 Python
python Tcp协议发送和接收信息的例子
2019/07/22 Python
对django2.0 关联表的必填on_delete参数的含义解析
2019/08/09 Python
Python安装与卸载流程详细步骤(图解)
2020/02/20 Python
Python+OpenCV实现图像的全景拼接
2020/03/05 Python
python实现密码强度校验
2020/03/18 Python
torchxrayvision包安装过程(附pytorch1.6cpu版安装)
2020/08/26 Python
如何完美的建立一个python项目
2020/10/09 Python
selenium+python自动化78-autoit参数化与批量上传功能的实现
2021/03/04 Python
html5适合移动应用开发的12大特性
2014/03/19 HTML / CSS
工会主席岗位责任制
2014/02/11 职场文书
新闻专业学生的自我评价
2014/02/13 职场文书
教研活动总结
2014/04/28 职场文书
小学生母亲节演讲稿
2014/05/07 职场文书
公务员爱岗敬业演讲稿
2014/08/26 职场文书
党的群众路线教育实践活动制度建设计划方案
2014/10/31 职场文书
幼儿园辞职书
2015/02/26 职场文书
介绍一下28个JS常用数组方法
2022/05/06 Javascript
MySQL的意向共享锁、意向排它锁和死锁
2022/07/15 MySQL