javascript事件模型介绍


Posted in Javascript onMay 31, 2016

一、原始事件模型

其事件类型:分为"输入事件(如onclicki)"和"语义事件(如onsubmit)"

事件程序的注册可以以下几种方式:

1、JS代码作为HTML性质值

<input type="button" value="Press me" onclick="alert('thanks');"

2、事件处理程序作为JS属性

附注:文档中的每个HTML元素在文档树中都有一个相应的JS对象,这个JS对象的属性对应于那个HTML元素的性质,无论作为HTML性质的JS代码还是作为JS属性的时间处理程序,其本身的属性都是函数"function".

<form name="f1">

<input name="b1" type="button" value="Press Me"/>

</form>

第一种赋值方式:

document.f1.b1.onclick=function(){alert('thanks');};

第二种赋值方式:

function plead(){window.status="Please Press Me!";}

document.f1.bi.onmouseover=plead;

作为JS属性的事件处理程序可以用JS属性显式调用

document.myfrom.onsubmit();

事件处理程序可以返回fale来阻止浏览器执行事件的默认动作,常用的如对onsubmit的操作。例外是
对超链接mouseover的window.status显示事件的阻挡,是返回true.例如:

<a href="help.htm" onmouseover="window.status='help';return true;">help</a>

二、DOM2事件模型

这个模型参考了IE的气泡模型而制定的,它是由w3c制定的规范.在原始模型中事件一旦发生就直接调用事件句柄,没有其它的事件传播过程.而在DOM2模型中事件有一个特殊的传播过程,分为三个阶段:

(1)capturing phase:事件被从document一直向下传播到目标元素,在这过程中如果有哪个祖先元素对该事件感兴趣可以注册自己的处理函数.

(2)target phase:事件到达目标元素,执行目标元素的事件处理函数.

(3)bubbling phase:事件从目标元素上升一直到达document,虽然所有的事件类型都会经历captruing phase阶段但是只有部分事件会经历bubbling phase阶段,例如submit事件就不会被上浮.
在整个的事件传播过程中可以调用event.stopPropagation()来停止事件的传播,调用preventDefault()来阻止浏览器的默认行为.

addEventListener("eventType","handler","true!false");

removeEventListner("eventType","handler","true!false");

三、IE模型

IE模型也提供了一个event对象封装了事件的详细信息,但是IE不把该对象传入事件处理函数,由于在任意时刻只会存在一个事件,所以IE把它作为全局对象window的一个属性,IE中的事件传播模式对应于DOM2的第二和第三阶段,首先执目标元素的处理函数,然后向上传播到达document,ie中只能能捕捉鼠标事件,而DOM2中可以捕捉所有的事件,IE中注册和删除事件处理函数的方法也不同于DOM2.

事件处理函数的注册和删除是通过元素的attachEvent("eventType","handler") and detachEvent("eventType","handler" ),与dom2不同的是eventType有on前缀

特点:
1、传播过程只起泡,不捕捉。起泡中断方法:
window.ecent.cancelBubble=true;
2、Event对象不是事件处理程序的函数参数,而是window的全局变量。
3、事件注册函数:attachEvent()和反注册:detachEvent().  

四、Netscape4事件模型

由于Netscape好像已经完全停止开发,所以就不详述了,简单的说:就是只捕捉不起泡。

以上就是javascript事件模型基本的介绍,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
ExtJS GTGrid 简单用户管理
Jul 01 Javascript
google jQuery 引用文件,jQuery 引用地址集合(jquery 1.2.6至jquery1.5.2)
Apr 24 Javascript
document.createElement()用法及注意事项(ff下不兼容)
Mar 13 Javascript
jqgrid 表格数据导出实例
Nov 21 Javascript
javascript记住用户名和登录密码(两种方式)
Aug 04 Javascript
jQuery position() 函数详解以及jQuery中position函数的应用
Dec 14 Javascript
简单了解Backbone.js的Model模型以及View视图的源码
Feb 14 Javascript
JS组件系列之JS组件封装过程详解
Apr 28 Javascript
jQuery 开发之EasyUI 添加数据的实例
Sep 26 jQuery
vuex 解决报错this.$store.commit is not a function的方法
Dec 17 Javascript
layui文件上传控件带更改后数据传值的方法
Sep 23 Javascript
Vue实现input宽度随文字长度自适应操作
Jul 29 Javascript
使用JavaScript实现弹出层效果的简单实例
May 31 #Javascript
javascript事件处理模型实例说明
May 31 #Javascript
jQuery基础知识点总结(必看)
May 31 #Javascript
浅谈JavaScript中小数和大整数的精度丢失
May 31 #Javascript
javascript小数精度丢失的完美解决方法
May 31 #Javascript
javascript解决小数的加减乘除精度丢失的方案
May 31 #Javascript
javascript基本语法
May 31 #Javascript
You might like
先进的自动咖啡技术,真的可以取代咖啡师吗?
2021/03/06 冲泡冲煮
PHP配置文件中最常用四个ini函数
2007/03/19 PHP
PHP COOKIE及时生效的方法介绍
2014/02/14 PHP
浅析application/x-www-form-urlencoded和multipart/form-data的区别
2014/06/22 PHP
phpStudy 2016 使用教程详解(支持PHP7)
2017/10/18 PHP
php和C#的yield迭代器实现方法对比分析
2019/07/17 PHP
比较全的JS checkbox全选、取消全选、删除功能代码
2008/12/19 Javascript
js实现数组转换成json
2015/06/26 Javascript
jquery实现简单的轮换出现效果实例
2015/07/23 Javascript
AngularJS控制器继承自另一控制器
2016/05/09 Javascript
vuejs在解析时出现闪烁的原因及防止闪烁的方法
2016/09/19 Javascript
Bootstrap页面缩小变形的快速解决办法
2017/02/03 Javascript
vuejs手把手教你写一个完整的购物车实例代码
2017/07/06 Javascript
vue-lazyload图片延迟加载插件的实例讲解
2018/02/09 Javascript
Vue.js中的computed工作原理
2018/03/22 Javascript
Vue实现调节窗口大小时触发事件动态调节更新组件尺寸的方法
2018/09/15 Javascript
Ant Design Vue 添加区分中英文的长度校验功能
2020/01/21 Javascript
Python文件操作基本流程代码实例
2017/12/11 Python
Python通过调用有道翻译api实现翻译功能示例
2018/07/19 Python
java中的控制结构(if,循环)详解
2019/06/26 Python
Python Django框架url反向解析实现动态生成对应的url链接示例
2019/10/18 Python
python实现word文档批量转成自定义格式的excel文档的思路及实例代码
2020/02/21 Python
皮尔·卡丹巴西官方商店:Pierre Cardin
2017/07/21 全球购物
学年自我鉴定范文
2013/10/01 职场文书
高三毕业生自我鉴定
2013/12/20 职场文书
奶茶专卖店创业计划书
2014/01/18 职场文书
药品采购员岗位职责
2014/02/08 职场文书
我读书我快乐演讲稿
2014/05/07 职场文书
市场策划求职信
2014/08/07 职场文书
小学绿色学校申报材料
2014/08/23 职场文书
党员教师四风问题对照检查材料
2014/09/26 职场文书
统计工作个人总结
2015/03/03 职场文书
2015年小学数学教师个人工作总结
2015/05/25 职场文书
会议简报格式范文
2015/07/20 职场文书
小学三年级语文教学反思
2016/03/03 职场文书
2016年度创先争优活动总结
2016/04/05 职场文书