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 相关文章推荐
js href的用法
May 13 Javascript
js模拟select下拉菜单控件的代码
May 08 Javascript
原生js编写autoComplete插件
Apr 13 Javascript
jQuery根据name属性进行查找的用法分析
Jun 23 Javascript
jQuery上传插件webupload使用方法
Aug 01 jQuery
js基于FileSaver.js 浏览器导出Excel文件的示例
Aug 15 Javascript
Angular4开发解决跨域问题详解
Aug 28 Javascript
vue-cli脚手架引入图片的几种方法总结
Mar 13 Javascript
Vue CLI3 如何支持less的方法示例
Aug 29 Javascript
详解SPA中前端路由基本原理与实现方式
Sep 12 Javascript
Angular6 发送手机验证码按钮倒计时效果实现方法
Jan 08 Javascript
vue 导航锚点_点击平滑滚动,导航栏对应变化详解
Aug 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中创建空文件的代码[file_put_contents vs touch]
2012/01/20 PHP
基于Zookeeper的使用详解
2013/05/02 PHP
详解PHP的Laravel框架中Eloquent对象关系映射使用
2016/02/26 PHP
php传值方式和ajax的验证功能
2017/03/27 PHP
thinkphp框架无限级栏目的排序功能实现方法示例
2020/03/29 PHP
ext for eclipse插件安装方法
2008/04/27 Javascript
获取网站跟路径的javascript代码(站点及虚拟目录)
2009/10/20 Javascript
基于Jquery+Ajax+Json的高效分页实现代码
2011/10/29 Javascript
jquery应该如何来设置改变按钮input的onclick事件
2012/12/10 Javascript
在新窗口打开超链接的方法小结
2013/04/14 Javascript
jquery遍历checkbox介绍
2014/02/21 Javascript
分享12个非常实用的JavaScript小技巧
2016/05/11 Javascript
微信QQ的二维码登录原理js代码解析
2016/06/23 Javascript
jQuery遍历DOM的父级元素、子级元素和同级元素的方法总结
2016/07/07 Javascript
Bootstrap源码解读表单(2)
2016/12/22 Javascript
jQuery Mobile漏洞会有跨站脚本攻击风险
2017/02/12 Javascript
BootStrap实现带关闭按钮功能
2017/02/15 Javascript
详解Angular4中路由Router类的跳转navigate
2017/06/09 Javascript
vue v-model动态生成详解
2018/06/30 Javascript
vue使用rem实现 移动端屏幕适配
2018/09/26 Javascript
angular中如何绑定iframe中src的方法
2019/02/01 Javascript
vue.js实现左边导航切换右边内容
2019/10/21 Javascript
详细介绍解决vue和jsp结合的方法
2020/02/06 Javascript
[57:53]DOTA2上海特级锦标赛主赛事日 - 2 败者组第二轮#3OG VS VP
2016/03/03 DOTA
python实现的udp协议Server和Client代码实例
2014/06/04 Python
Python中的包和模块实例
2014/11/22 Python
numpy使用技巧之数组过滤实例代码
2018/02/03 Python
linux下安装python3和对应的pip环境教程详解
2019/07/01 Python
浅析使用Python搭建http服务器
2019/10/27 Python
python实现视频读取和转化图片
2019/12/10 Python
如何清空python的变量
2020/07/05 Python
语文教育专业推荐信范文
2013/11/25 职场文书
入股协议书范本
2014/04/14 职场文书
2015年乡镇扶贫工作总结
2015/04/08 职场文书
JavaWeb Servlet开发注册页面实例
2022/04/11 Java/Android
Android Studio实现带三角函数对数运算功能的高级计算器
2022/05/20 Java/Android