一、事件流

  顺序 备注
事件冒泡 目标对象~document对象  
事件捕获 document对象~目标对象 老版本浏览器不支持
DOM事件流 document对象~目标对象~document对象 IE8-不支持

二、事件处理程序

(1)html事件处理程序(略)

(2)DOM0事件处理程序

  • 在元素作用域中运行(this=调用元素)
var btn=document.getElementById("mybtn");
btn.onclick=function(){
  alert(this.id);//mybtn
}
  • 在冒泡阶段被处理
  • 对每个元素值支持一个事件处理程序
  • 删除方式
btn.onclick=null;

(3)DOM2事件处理程序

  • 在元素作用域中运行(this=调用元素)
var btn=document.getElementById("mybtn");
btn.addEventListener("click",function(){
  alert(this.id);//mybtn
},false);
  • 采用DOM事件流,可在捕获阶段和冒泡阶段处理

第三个参数为false,表示在冒泡阶段处理事件;参数为true,表示在捕获阶段处理事件。

默认值为false,最大限度兼容各浏览器。(因为老版本只支持冒泡事件)

  • 对每个元素值支持多个事件处理程序(主要好处),执行顺序为添加顺序;
  • 删除方式(与添加事件的参数完全相同)
方式:removeEventListener()
btn.removeEventListener("click",function(){//无效
  alert(this.id);//mybtn
},false);

注意:通过addEventListener()添加的匿名函数将无法移除。即上一段代码中的匿名函数移除不了,因为addEventListener()中的匿名函数与removeEventListener()中的匿名函数是完全不同的函数。所以,应将匿名函数表示为一个变量,如下:

var handler=function(){
alert(this.id);
}
btn.addEventListener("click",handler,false);
btn.removeEventListener("click",handler,false);

(4)IE事件处理程序

  • 在全局作用域中运行(this=window)
var btn=document.getElementById("mybtn");
btn.attachEvent("onclick",function(){
  alert(this===window);//true
});
  • 在冒泡阶段处理

第三个参数为false,表示在冒泡阶段处理事件;参数为true,表示在捕获阶段处理事件。

默认值为false,最大限度兼容各浏览器。(因为老版本只支持冒泡事件)

  • 对每个元素支持多个事件处理程序,执行顺序为相反于添加顺序。
  • 删除方式(与添加事件的参数完全相同)
方式:detachEvent()
btn.detachEvent("onclick",function(){//无效
  alert(this===window);
});

注意:同上;

事件处理程序DOM0,DOM2,IE的区别总结的更多相关文章

  1. js事件处理程序详解,html事件处理程序,dom0级事件处理程序,dom2级事件处理程序

    博客搬迁,给你带来的不便,敬请谅解! http://www.suanliutudousi.com/2017/11/24/js%e4%ba%8b%e4%bb%b6%e5%a4%84%e7%90%86%e ...

  2. DOM0,DOM2,DOM3 事件基础知识

    事件是javascript和HTML交互基础, 任何文档或者浏览器窗口发生的交互, 都要通过绑定事件进行交互; 事件有DOM0, DOM2和DOM3的区分(别问我怎么少了一个DOM1, 也没找到DOM ...

  3. DOM0,DOM2,DOM3事件,事件基础知识入门

    事件是javascript和HTML交互基础, 任何文档或者浏览器窗口发生的交互, 都要通过绑定事件进行交互; 事件有DOM0, DOM2和DOM3的区分(别问我怎么少了一个DOM1, 也没找到DOM ...

  4. 深入理解DOM事件机制系列第二篇——事件处理程序

    × 目录 [1]HTML [2]DOM0级 [3]DOM2级[4]IE[5]总结 前面的话 事件处理程序又叫事件侦听器,实际上就是事件的绑定函数.事件发生时会执行函数中相应代码.事件处理程序有HTML ...

  5. 探究JavaScript中的五种事件处理程序

    探究JavaScript中的五种事件处理程序 我们知道JavaScript与HTML之间的交互是通过事件实现的.事件最早是在IE3和Netscape Navigator 2中出现的,当时是作为分担服务 ...

  6. javascript将DOM事件处理程序封装为event.js 出现的低级错误记录

    将 DOM 0级事件处理程序和DOM2级事件处理程序 IE事件处理程序封装为eventUtil对象,达到跨浏览器的效果.代码如下: var eventUtil = { // 添加事件句柄 addEve ...

  7. [转]javascript指定事件处理程序包括三种方式:

    javascript指定事件处理程序包括三种方式: (1):DOM0级事件处理程序 如: 代码如下: var btn=document.getElementById("mybtn" ...

  8. JavaScript事件处理程序 学习笔记

    我一直认为Javascript的特点就是在和用户交互的过程中可以进行一些操作,那么事件作为用户交互的主要部分就显得特别重要,今天先学习了JS事件处理程序的相关内容. 首先,要明白Javascript ...

  9. javascript事件小结(事件处理程序方式)--javascript高级程序设计笔记

    1.事件流:描述的是从页面中接收事件的顺序. 2.事件冒泡:IE的事件流叫做事件冒泡,即事件开始从具体的元素(文档中嵌套层次最深的那个节点)接收,然后逐级向上传播到不具体的节点(文档). 3.事件捕获 ...

随机推荐

  1. 46.ActiveMQ开篇(Hello World、安全认证、Connection、Session、MessageProducer、MessageConsumer)

    要给有能力的人足够的发挥空间,公司可以养一些能力平平甚至是混日子的人,但绝不能让这些人妨碍有能力的人,否则这样的环境不留也罢. 一.背景介绍 CORBA\DCOM\RMI等RPC中间件技术已经广泛应用 ...

  2. 【ASP.NET】DataTable导出EXCEL,弹窗提示下载保存(完整代码)

    //新建ASPX protected void Page_Load(object sender, EventArgs e) { DataTable dt = new DataTable(); Data ...

  3. 多事实表 SQL实现和SSAS中MDX实现的差异

    如图,资产负债视图是事实表,损益表也是事实表.都包含年.月.组织.账簿信息. SQL如何实现呢? 简单粗暴,事实事实表串事实表,Full Join select 损益视图.年 ,损益视图.年月 ,损益 ...

  4. 手动启动 oracle 服务

      手动启动 Oracle 服务 为了学习,我们常常会在个人PC上安装 Oracle 数据库,这大大影响了计算机的运行速度,尤其是计算机开机速度,如果 Oracle 使用频率并不是非常高,我们可以禁止 ...

  5. springcloud(八)-Hystrix熔断器

    雪崩效应 在微服务架构中通常会有多个服务层调用,基础服务的故障可能会导致级联故障,进而造成整个系统不可用的情况,这种现象被称为服务雪崩效应.服务雪崩效应是一种因“服务提供者”的不可用导致“服务消费者” ...

  6. Array对象的判定

    /* 关于JS对象类型的判断,最复杂的在于RegExp和Array了,判定RegExp的情形不较少,而Array就比较多了,下面就是判断Array的方法 */ //方法一:利用instanceof来判 ...

  7. 字符编码的来源,ascii、unicode和utf-8编码的关系

    字符编码 我们已经讲过了,字符串也是一种数据类型,但是,字符串比较特殊的是还有一个编码问题. 因为计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理.最早的计算机在设计时采用8个比特 ...

  8. PHP之string之addslashes()函数使用

    addslashes (PHP 4, PHP 5, PHP 7) addslashes - Quote string with slashes addslashes - 使用反斜线引用字符串 Desc ...

  9. 剑指offer(41-45)编程题

    41.入一个递增排序的数组和一个数字S,在数组中查找两个数,是的他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的. class Solution { public: vector&l ...

  10. A GDB Tutorial with Examples--转

    http://www.cprogramming.com/gdb.html A GDB Tutorial with Examples By Manasij Mukherjee A good debugg ...