javascript的事件

原文:javascript的事件

前戏


  今天在博客中看到了javascript的事件机制,就自己试试写一个简单的冒泡捕获测试,但是测试结果出乎了我的意料,主要是自己原来对事件了解不是很清楚,现在写篇博客记录下。

基础

  先来看一下我在Aaron博客中截的一张图

  DOM2中事件有三个阶段

  1. 事件的捕获阶段

  2. 事件的目标阶段

  3. 事件的冒泡阶段

  事件的捕获阶段:是由document元素向发生事件的元素传递。

  事件的目标阶段:是指在找到了发生事件的目标元素这个阶段,找到之后就会执行事件监听器。如果在目标元素上同时绑定捕获和冒泡阶段事件,事件的执行顺序与绑定的顺序有关。其实也好理解,如果是这样的话,在目标元素上绑定了两个阶段的监听事件,因为操作的元素就是目标元素,绑定的事件无须传递,索性就按绑定顺序执行,个人理解。

  事件的冒泡阶段:指由目标元素向上传递,就是想父元素传递,如果遇到监听的事件就执行。可以这么理解,由于是子元素向祖先传递,祖先当然知道是自己下的事件被监听了,因为父元素一直包含子元素。

  例子

  http://sandbox.runjs.cn/show/whkkse7t

  代码

  


 1 <!DOCTYPE HTML>
2 <html>
3 <head>
4 <title>js事件</title>
5 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
6 <style type="text/css">
7 #outer{
8 border:1px solid red;
9 height:200px;
10 width:200px;
11 }
12 #middle{
13 border:1px solid blue;
14 height:100px;
15 width:100px;
16 margin:50px auto;
17 }
18 #inner{
19 border:1px solid black;
20 height:50px;
21 width:50px;
22 margin:25px auto;
23 }
24 </style>
25 <script type="text/javascript">
26 window.addEventListener("load",init,false);
27 function init(){
28 var obj = document.getElementById("middle");
29 obj.addEventListener("click",function(e){alert(e.target.id+" 冒泡")},false);//1
30 obj.addEventListener("click",function(e){alert(e.target.id+" 捕获")},true);//2
31 }
32 //document.addEventListener("DOMContentLoaded",function(){alert("s")},false);
33 //这里为了方便直接在同一个元素绑定了两个事件
34 //点击middle元素,依次会执行代码1和2,此时的执行顺序和绑定事件的顺序相同
35 //点击inner元素时,会先执行代码2再执行代码1,此时就先执行捕获阶段在执行冒泡阶段
36 //可以这么说 如果在目标元素上绑定事件,事件的执行顺序与绑定的执行顺序相同,否则先捕获阶段在冒泡阶段
37 </script>
38 </head>
39 <body>
40 <div id="outer">
41 <div id="middle">
42 <div id="inner">
43 </div>
44 </div>
45 </div>
46 </body>
47
48 </html>

javascript的事件,布布扣,bubuko.com

时间: 2024-10-13 19:49:32

javascript的事件的相关文章

JavaScript中事件绑定的方法总结

最近收集了一些关于JavaScript绑定事件的方法,汇总了一下,不全面,但是,希望便于以后自己查看. JavaScript中绑定事件的方法主要有三种: 1 在DOM元素中直接绑定 2 JavaScript代码中直接绑定 3 绑定事件监听函数 一.在DOM元素中直接绑定 也就是直接在html标签中通过 onXXX=“” 来绑定.举个例子: <input type="button" value="点我呦" onclick="alert("he

javaScript 删除事件 弹出确认 取消对话框

1 javaScript 删除事件 弹出确认 取消对话框 2 1. 3 4 <a href="javascript:if(confirm('确实要删除?'))location='http://www.baidu.com'">删除</a> 5 6 2. 7 8 <script language="JavaScript"> 9 function delete_confirm(e) 10 { 11 if (event.srcElemen

JavaScript onkeydown事件入门实例(键盘某个按键被按下)

JavaScript onkeydown 事件 用户按下一个键盘按键时会触发 onkeydown 事件.与 onkeypress事件不同的是,onkeydown 事件是响应任意键按下的处理(包括功能键),onkeypress 事件只响应字符键按下后的处理. 提示 Internet Explorer/Chrome 浏览器使用 event.keyCode 取回被按下的字符,而 Netscape/Firefox/Opera 等浏览器使用 event.which. onkeydown 获取用户按下的键

JavaScript 阻止事件冒泡的实现方法

JavaScript 阻止事件冒泡,无使用其它插件来辅助,原生JS代码,考虑到浏览器的兼容性问题,这里对IE/火狐.Operating以及Chrome都有针对性的判断,代码如下: function cancelBubble(evt) { // 阻止事件冒泡 if (window.event) { // Chrome,IE6,Opera window.event.cancelBubble = true; } else { // FireFox 3 evt.stopPropagation(); }

JavaScript 自定义事件

Javascript事件模型系列(四)我所理解的javascript自定义事件 漫谈js自定义事件.DOM/伪DOM自定义事件

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

javascript指定事件处理程序包括三种方式: (1):DOM0级事件处理程序 如: 代码如下: var btn=document.getElementById("mybtn"); //取得该按钮的引用 btn.onclick=function(){ alert('clicked'); alert(this.id); // mybtn 以这种方式添加的事件处理程序会在事件流的冒泡阶段被处理. 删除DOM0级方法指定的事件处理程序: btn.onclick=null; // 删除事件

JavaScript的事件_事件概述/事件模型

一.事件概述 JavaScript 事件是由访问 Web 页面的用户引起的一系列操作,例如:用户点击页面上的某个按钮或者鼠标移动到页面的某个图片上而产生一系列的互动的反馈. 当用户执行某些操作的时候,再去执行一系列代码. 事件一般是用于浏览器和用户操作进行交互.最早是 IE 和 Netscape Navigator 中出现,作为分担服务器端运算负载的一种手段.直到几乎所有的浏览器都支持事件处理. 而 DOM2级规范开始尝试以一种复合逻辑的方式标准化 DOM 事件.IE9.Firefox.Oper

JavaScript 计时事件

JavaScript 计时事件 通过使用 JavaScript,我们有能力作到在一个设定的时间间隔之后来执行代码,而不是在函数被调用后立即执行.我们称之为计时事件. 在 JavaScritp 中使用计时事件是很容易的,两个关键方法是: setInterval() - 间隔指定的毫秒数不停地执行指定的代码. setTimeout() - 暂停指定的毫秒数后执行指定的代码 Note: setInterval() 和 setTimeout() 是 HTML DOM Window对象的两个方法. set

javascript的事件捕获和事件冒泡

W3C规范对于脚本事件有两种处理方式,第一种为冒泡模型,第二种是事件捕获模型,前者为早期浏览器所支持的(也称DOM 0标准),后者为W3C规范推荐的方法(也称DMO 2标准). 其主要区别: @1:事件捕获不依赖于特定的事件来处理属性 @2:你可以对任何对象的任何一种事件注册多个事件句柄函数 <!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> &