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 相关文章推荐
ExtJS Ext.MessageBox.alert()弹出对话框详解
Apr 02 Javascript
javascript学习(一)构建自己的JS库
Jan 02 Javascript
JS批量操作CSS属性详细解析
Dec 16 Javascript
Javascript字符串浏览器兼容问题分析
Dec 01 Javascript
AngularJS中如何使用$http对MongoLab数据表进行增删改查
Jan 23 Javascript
基于javascript实现表格的简单操作
May 21 Javascript
浅谈bootstrap源码分析之scrollspy(滚动侦听)
Jun 06 Javascript
深入理解jQuery3.0的domManip函数
Sep 01 Javascript
Javascript中return的使用与闭包详解
Jan 11 Javascript
mpvue+vuex搭建小程序详细教程(完整步骤)
Sep 30 Javascript
基于vue-upload-component封装一个图片上传组件的示例
Oct 16 Javascript
VUEX采坑之路之获取不到$store的解决方法
Nov 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
不用mod_rewrite直接用php实现伪静态化页面代码
2008/10/04 PHP
PHP 只允许指定IP访问(允许*号通配符过滤IP)
2014/07/08 PHP
PHP+sqlite数据库操作示例(创建/打开/插入/检索)
2016/05/26 PHP
php compact 通过变量创建数组
2016/11/15 PHP
Paypal实现循环扣款(订阅)功能
2017/03/23 PHP
Laravel配置全局公共函数的方法步骤
2019/05/09 PHP
PHP封装请求类实例分析【基于Yii框架】
2019/10/17 PHP
基于jquery实现的一个选择中国大学的弹框 (数据、步骤、代码)
2012/07/26 Javascript
jQuery的3种请求方式$.post,$.get,$.getJSON
2014/03/28 Javascript
iframe窗口高度自适应的又一个巧妙实现思路
2014/04/04 Javascript
jquery对象和javascript对象即DOM对象相互转换
2014/08/07 Javascript
node.js中的buffer.length方法使用说明
2014/12/14 Javascript
JS实现动态给图片添加边框的方法
2015/04/01 Javascript
avalonjs制作响应式瀑布流特效
2015/05/06 Javascript
js+CSS实现模拟华丽的select控件下拉菜单效果
2015/09/01 Javascript
基于Jquery实现万圣节快乐特效
2015/11/01 Javascript
基于cssSlidy.js插件实现响应式手机图片轮播效果
2016/08/30 Javascript
JS实现图片垂直居中显示小结
2016/12/13 Javascript
vue.js的提示组件
2017/03/02 Javascript
jQuery插件FusionCharts绘制的2D条状图效果【附demo源码】
2017/05/13 jQuery
vue 监听窗口变化对页面部分元素重新渲染操作
2020/07/28 Javascript
javascript读取本地文件和目录方法详解
2020/08/06 Javascript
详解Vue的mixin策略
2020/11/19 Vue.js
[01:29]2014DOTA2展望TI 剑指西雅图DK战队专访
2014/06/30 DOTA
python文件特定行插入和替换实例详解
2017/07/12 Python
Python3 使用map()批量的转换数据类型,如str转float的实现
2019/11/29 Python
HTML5实现获取地理位置信息并定位功能
2015/04/25 HTML / CSS
雅虎笔试题(字符串操作)
2015/03/24 面试题
信息管理专业推荐信
2013/10/29 职场文书
企划专员岗位职责
2013/12/09 职场文书
门诊手术室工作制度
2014/01/30 职场文书
出租房屋协议书
2014/09/14 职场文书
党员批评与自我批评总结
2014/10/15 职场文书
汽车质检员岗位职责
2015/04/08 职场文书
呼啸山庄读书笔记
2015/06/29 职场文书
使用Springboot实现健身房管理系统
2021/07/01 Java/Android