一、事件流

是描述页面接受事件的顺序,
IE 使用的是时间冒泡流;而Netscape的事件采用的是事件捕获流。
1、事件冒泡
JS 和 HTML是通过事件的方式实现交互。
事件冒泡 开始元素,将事件逐级传递,(例子:当你点击一个按钮的时候你就点击了html一直document)。

二、事件处理

1、DOM0 级事件处理

  var btn2 = document.getElementById('btn2');
  btn2.onclick=function(){
   alert('holle word!');
  }

//清除DOM0级事件处理
btn2.onclick=null;

2、DOM2级事件处理可以绑定多个事件

//非IE DOM2事件处理
  var btn3 = document.getElementById('btn3');
  btn3.addEventListener('click',function(){
    alert('btn3');
  },false);
  btn3.addEventListener('click',showMessge
  },false);
  fucntion showMessge(){
    alert('text01');
  }
 btn3.removeEventListener('click',showMessge,false);

 //IE DOM2事件处理
  btn3.attachEvent('onclick',showMessge);
  btn3.detachEvent('onclick',showMessge);

三、事件对象

1、DOM中的事件对象
(1)、type:获取事件类型
(2)、target:事件目标
(3)、stopPropagation() 阻止事件冒泡
(4)、preventDefault() 阻止事件的默认行为

2、IE中的事件对象
(1)、type属性获取事件类型
(2)、srcElement属性 获取事件的来源
(3)、cancelBubble 属性
(4)、returnValue阻止事件的行为 false 阻止

四、简单的封装

var eventUtil={  // 添加句柄
  addHandler:function(element,type,handler){
    if(element.addEventListener){
      element.addEventListener(type,handler,false);
    }else if(element.attachEvent){
      element.attachEvent('on'+type,handler);
    }else{
      element['on'+type]=handler;
    }
  },
  // 删除句柄
  removeHandler:function(element,type,handler){
    if(element.removeEventListener){
      element.removeEventListener(type,handler,false);
    }else if(element.detachEvent){
      element.detachEvent('on'+type,handler);
    }else{
      element['on'+type]=null;
   }
  },
   //获取这个事件
   getEvent:function(event){
      return event?event:window.event;
    },
    //获取事件类型
    getType:function(event){
      return event.type;
    },
    //获取对象
    getElement:function(event){
      return event.target || event.srcElement;
    },
    //阻止对象的默认事件
    preventDefault:function(event){
      if(event.preventDefault){
        event.preventDefault();
      }else{
        event.returnValue=false;
    }
   },
   //阻止事件冒泡
   stopPropagation:function(event){
     if(event.stopPropagation){
       event.stopPropagation();
     }else{
       event.cancelBubble=true;
     }
    }
  }

javascript 中 事件流和事件冒泡的更多相关文章

  1. 事件流之事件冒泡与事件捕获<JavaScript高级程序设计>学习笔记

    1.事件流 浏览器开发团队遇到一个很有意思问题:页面的那一部分会拥有特定的事件? 对于理解这个问题您可以想象画在一张纸上的一组同心圆,如果你把手指放在圆心上,那么你的手指指向的其实不是一个圆,而是纸上 ...

  2. JavaScript 中的事件流和事件处理程序(读书笔记思维导图)

    JavaScript 程序采用了异步事件驱动编程模型.在这种程序设计风格下,当文档.浏览器.元素或与之相关的对象发生某些有趣的事情时,Web 浏览器就会产生事件(event). JavaScript ...

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

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

  4. js 事件流和事件冒泡阻止

    js 事件流和事件冒泡阻止 事件流 当浏览器发展到第四代的时候(IE4与Netscape4)浏览器开发团队遇到一个有意思的的问题: 页面的哪一部分会拥有某个特定的事件? 比如在纸上画上一组同心圆,如果 ...

  5. 在Javascript中监听flash事件(转)

    在Javascript中监听flash事件,其实有两种做法: 1.在特定的环境下(例如专门制作的flash),大家约定一个全局函数,然后在flash的事件中用ExternalInterface.cal ...

  6. JavaScript中的鼠标滚轮事件详解

    JavaScript中的鼠标滚轮事件详解/*Firefox注册事件*/ ~~~Firefox: addEventListener('DOMMouseScroll', handler, false)if ...

  7. JavaScript中捕获/阻止捕获、冒泡/阻止冒泡

    JavaScript中捕获/阻止捕获.冒泡/阻止冒泡 事件流描述的是从页面中接收事件的顺序.提出事件流概念的正是IE和Netscape,但是前者提出的是我们常用的事件冒泡流,而后者提出的是事件捕获流. ...

  8. js事件流、事件处理程序/事件侦听器

    1.事件流 事件冒泡 IE的事件流叫做事件冒泡(event bubbling),即事件开始时由最具体的元素(文档中嵌套层次最深的那个节点)接收,然后逐级向上传播到较为不具体的节点(文档). 事件捕获 ...

  9. HTML 事件(三) 事件流与事件委托

    本篇主要介绍HTML DOM中的事件流和事件委托. 其他事件文章 1. HTML 事件(一) 事件的介绍 2. HTML 事件(二) 事件的注册与注销 3. HTML 事件(三) 事件流与事件委托 4 ...

  10. JS——事件流与事件处理程序

    1.事件流:从页面中接收事件的顺序 1.1 IE :事件冒泡流1.2 Netscape :事件捕获1.3 DOM事件流 :事件捕获阶段——事件目标阶段——事件冒泡阶段DOM2级事件规定 :捕获阶段不会 ...

随机推荐

  1. server配置学习 ---- 关闭防火墙

    iptables 一种网络防火墙,在LINUX下使用,RedHat9.0版本号以上自带. 它能够实现NAT转换.能够做上网代理. 首先对于server的配置第一步来说就是关闭防火墙.在没有图形化中的l ...

  2. H264格式具体说明

    一 H.264句法1.1元素分层结构H.264编码器输出的Bit流中,每一个Bit都隶属于某个句法元素.句法元素被组织成有层次的结构,分别描写叙述各个 一 H.264句法 1.1元素分层结构 H.26 ...

  3. 《数据通信与网络》笔记--虚电路网络:帧中继和ATM

    在之前的文章中已经介绍过虚电路交换,详细请参见:http://blog.csdn.net/todd911/article/details/9069447 这边介绍下使用虚电路交换的2中WAN技术:帧中 ...

  4. [Swust OJ 166]--方程的解数(hash法)

    题目链接:http://acm.swust.edu.cn/problem/0166/ Time limit(ms): 5000 Memory limit(kb): 65535   有如下方程组: A1 ...

  5. CSS 实现图片灰度效果 兼容各种浏览器

    CSS 实现图片灰度效果 兼容各种浏览器如360浏览器 CSS实现图片灰度效果就是通过CSS样式让彩色图片呈现为灰色,相当于把一张图像的颜色模式调整为灰度,CSS可以通过以下几种方法来实现灰度效果. ...

  6. Intent过滤,intent-filter

    Intent过滤 编写:kesenhoo - 原文:http://developer.android.com/training/basics/intents/filters.html 前两节课主要讲了 ...

  7. 解决Spring中singleton的Bean依赖于prototype的Bean的问题

    在spring bean的配置的时候,可能会出现一个singleton的bean依赖一个prototype的bean.因为singleton的bean只有一次初始化的机会,所以他们的依赖关系页只有在初 ...

  8. ognl--数据运转的催化剂

    原文链接:http://struts2.group.iteye.com/group/wiki/1353-ognl-catalyst-for-data-operation-in-struts2 首先让我 ...

  9. uva 10271 Chopsticks(dp)

    题目连接:10271 - Chopsticks 题目大意:给出m和n, 然后给出n根筷子从小到大给出, 现在要从这n根筷子中选出m + 8组筷子, 每组筷子包括三根, 现在要求所有m + 8组每组筷子 ...

  10. Linux命令: ln

    每天一个linux命令(35):ln 命令 实例1:给文件创建软链接 命令: ln -s log2013.log link2013 输出: [root@localhost test]# ll -rw- ...