在各种浏览器中存在三种事件模型:原始事件模型( original event model),DOM2事件模型,IE事件模型.其中原始的事件模型被所有浏览器所支持,而DOM2中所定义的事件模型目前被除了IE以外的所有主流浏览器支持.

1.原始事件模型

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

事件程序的注册可以以下几种方式: 
         1、JS代码作为HTML性质值

<input type="button" value="Press me" οnclick="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.οnclick=function(){alert('thanks');};

第二种赋值方式:

function plead(){window.status="Please Press Me!";} 
document.f1.bi.οnmοuseοver=plead;

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

document.myfrom.onsubmit();

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

<a href="help.htm" οnmοuseοver="window.status='help';return true;">help</a>

2.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");

3.IE模型

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

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

IE与非IE浏览器在事件绑定的执行顺序问题

JavaScript代理

JavaScript基础讲解[七]_事件模型

JS事件模型小结

参考资料: JavaScript 博客园

JavaScript 百度贴吧

解决 IE7 下 window.status 不显示的问题

<a href="#" οnmοuseοver="window.status='立即刷新对话区内容,默认为每12秒刷新一次。';return true;" οnmοuseοut="window.status='';return true;" target='f1'>help</a>

具体的方法:打开IE7,在“工具—〉Internet 选项—〉安全—〉选中Internet”,点击“自定义级别”,在“允许状态栏通过脚本更新”中选择“启用”就行了。

IE6下不用设置,默认是可以的。

而FF下window.status 默认情况下是不能修改的

JavaScript--事件模型相关推荐

  1. Javascript事件模型系列(一)事件及事件的三种模型

    一.开篇 在学习javascript之初,就在网上看过不少介绍javascript事件的文章,毕竟是js基础中的基础,文章零零散散有不少,但遗憾的是没有看到比较全面的系列文章.犹记得去年这个时候,参加 ...

  2. JavaScript 事件模型 事件处理机制

    这篇文章对于了解Javascript的事件处理机制非常好,将它全文转载于此,以备不时之需. 什么是事件? 事件(Event)是JavaScript应用跳动的心脏 ,也是把所有东西粘在一起的胶水.当我们 ...

  3. Javascript事件模型系列(二)事件的捕获-冒泡机制及事件委托机制

    一.事件的捕获与冒泡 由W3C规定的DOM2标准中,一次事件的完整过程包括三步:捕获→执行目标元素的监听函数→冒泡,在捕获和冒泡阶段,会依次检查途径的每个节点,如果该节点注册了相应的监听函数,则执行监 ...

  4. javascript事件模型框架

    最近一直在读<javascript高级程序设计>,也快读完了,读到事件这一章,书中提供的一个事件工具类很实用,我注释了一下,并摘记: //eventutil.js var EventUti ...

  5. 事件模型、事件流(冒泡与捕获)、事件代理

    本文原链接:https://www.cnblogs.com/hngdlxy143/p/9068282.html https://www.jb51.net/article/139997.htm 事件模型 ...

  6. JavaScript 复习之 事件模型 和 Event对象

    事件模型 一.监听函数 js 有三种方法,可以为事件绑定监听函数 HTML 的 on- 属性 元素节点的事件属性,也可以指定监听函数 EventTarget.addEventListener() DO ...

  7. javascript中0级DOM和2级DOM事件模型浅析

    Javascript程序使用的是事件驱动的设计模式,为一个元素添加事件监听函数,当这个元素的相应事件被触发那么其添加的事件监听函数就被调用: <input type="button&q ...

  8. JavaScript 事件(冒泡捕获)处理模型

    JavaScript 事件处理模型 (冒泡&捕获) 1.事件处理流程 DOM 结构: html --> body --> div(事件绑定对象) 2. 事件捕获阶段 获取事件触发对 ...

  9. 轻松学习JavaScript二十七:DOM编程学习之事件模型

    在介绍事件模型之前,我们先来看什么是事件和什么是event对象. 一事件介绍 JavaScript事件是由访问Web页面的用户引起的一系列操作,使我们有能力创建动态页面,事件是可以被 JavaScri ...

  10. 【前端学习】前端学习第十五天:JavaScript中的事件模型

    在各种浏览器中存在三种事件模型:原始事件模型.DOM事件模型和IE事件模型: 一.原始事件模型: 原始事件模型被所有浏览器支持: 在原始事件模型中.事件一旦发生就直接调用事件处理函数,事件不会向别的对 ...

最新文章

  1. HDU 1556 Color the ball
  2. c++ opencv Rectangle
  3. 视频直播技术详解(5)延迟优化
  4. 辽师大计算机科学与技术专业怎么样,性价比很高的大学,辽师大的优势专业分析!家长请收藏...
  5. npm 查看当前生效的配置
  6. Windows下程序启动时出现0xc000007b错误的解决方案
  7. Web 安全开发规范手册 V1.0
  8. c++ 测试串口速率_山西充放电测试设备实现多台仪器准确通
  9. vue3移动端腾讯地图坐标拾取,获取当前定位(腾讯、高德、百度、天地图),火星坐标GCJ-02–>百度坐标BD-09,根据坐标经纬度计算两点距离的方法,点击链接打开地图导航的方法
  10. Linux的capability分析
  11. 通过简单的C语言解决找钱问题
  12. EMV(二)交易流程
  13. 云计算之资源迁移技术
  14. 一些简单小技巧助你快速成为Linux高手
  15. 《易中天中华史 - 第五卷 从春秋到战国》读书笔记
  16. 利用stm32f103c8t6实现对WS2812的控制(从硬件出发)
  17. Spark RDD的窄依赖和宽依赖
  18. html求正方形面积,利用js计算正方形的面积的方法介绍
  19. 中班音乐计算机活动课,幼儿园中班韵律活动教案
  20. 昆仑通态MCGS与3台力士乐VFC-x610变频器通讯程序 实现昆仑通态触摸屏与3台力士乐VFC-x610变频器通讯

热门文章

  1. 【Android 插件化】现有的针对插件化恶意应用的解决方案 | 插件化应用开发推荐方案
  2. 【RecyclerView】 七、RecyclerView.ItemDecoration 条目装饰 ( getItemOffsets 边距设置 )
  3. Python,Pandas,Bokeh Cheat Sheet-Data Science
  4. 124 Binary Tree Maximum Path Sum
  5. 《C程序设计语言》读书笔记----习题1-21
  6. 8条腾讯的产品管理方式
  7. Matlab符号计算结果过长无法在屏幕中显示的问题
  8. AOE网(求关键路径)(c/c++)
  9. 小技巧:远程连接共享文件密码错误
  10. 【Leetcode】79.单词搜索