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 相关文章推荐
YUI的Tab切换实现代码
Apr 11 Javascript
jQuery实现图片渐入渐出切换展示效果
Aug 15 Javascript
javascript中获取class的简单实现
Jul 12 Javascript
JS HTML5拖拽上传图片预览
Jul 18 Javascript
JS常用知识点整理
Jan 21 Javascript
javascript实现多张图片左右无缝滚动效果
Mar 22 Javascript
微信小程序分页加载的实例代码
Jul 11 Javascript
vue2.0移除或更改的一些东西(移除index key)
Aug 28 Javascript
基于jQuery选择器之表单对象属性筛选选择器的实例
Sep 19 jQuery
仿iPhone通讯录制作小程序自定义选择组件的实现
May 23 Javascript
vuex 中插件的编写案例解析
Jun 10 Javascript
用JS创建一个录屏功能
Nov 11 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脚本的10个技巧(3)
2006/10/09 PHP
PHP生成Flash动画的实现代码
2010/03/12 PHP
PHP实现基于图的深度优先遍历输出1,2,3...n的全排列功能
2017/11/10 PHP
jQuery取得select选择的文本与值的示例
2013/12/09 Javascript
javascript特殊日历控件分享
2016/03/07 Javascript
jQuery实现点击查看大图并以弹框的形式居中
2016/08/08 Javascript
JavaScript-html标题滚动效果的简单实现
2016/09/08 Javascript
JS组件系列之MVVM组件 vue 30分钟搞定前端增删改查
2017/04/28 Javascript
工作中常用到的ES6语法
2018/09/04 Javascript
详解SPA中前端路由基本原理与实现方式
2018/09/12 Javascript
es6中比较有用的7个技巧小结
2019/07/12 Javascript
JS实现关闭小广告特效
2021/01/29 Javascript
js回调函数原理与用法案例分析
2020/03/04 Javascript
js Math数学简单使用操作示例
2020/03/13 Javascript
基于JavaScript实现猜数字游戏代码实例
2020/07/30 Javascript
k8s node节点重新加入master集群的实现
2021/02/22 Javascript
解决Python运行文件出现out of memory框的问题
2018/12/03 Python
pandas dataframe添加表格框线输出的方法
2019/02/08 Python
用python实现刷点击率的示例代码
2019/02/21 Python
Python 多个图同时在不同窗口显示的实现方法
2019/07/07 Python
pandas DataFrame的修改方法(值、列、索引)
2019/08/02 Python
Python编写打字训练小程序
2019/09/26 Python
python3 mmh3安装及使用方法
2019/10/09 Python
Flask框架搭建虚拟环境的步骤分析
2019/12/21 Python
vscode+PyQt5安装详解步骤
2020/08/12 Python
HTML5中canvas中的beginPath()和closePath()的重要性
2018/08/24 HTML / CSS
Casetify官网:自制专属手机壳、iPad护壳和Apple Watch手表带
2018/05/09 全球购物
清洁工表扬信
2014/01/08 职场文书
法律进社区实施方案
2014/03/21 职场文书
奥巴马的演讲稿
2014/05/15 职场文书
政府班子四风问题整改措施
2014/10/04 职场文书
个人查摆剖析材料
2014/10/16 职场文书
2016秋季幼儿园开学寄语
2015/12/03 职场文书
详解用Python把PDF转为Word方法总结
2021/04/27 Python
SQL优化老出错,那是你没弄明白MySQL解释计划用法
2021/11/27 MySQL
golang操作rocketmq的示例代码
2022/04/06 Golang