1.两个阶段三个模型:Netscape支持事件捕获,IE支持事件冒泡,w3c是先捕获后冒泡

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Event Flow</title> <link rel="stylesheet" type="text/css" href="style.css" /> <script type="text/javascript">
function init(){
function modifiedAddEvent( obj, type, fn ) {
if(obj.addEventListener) {
// The W3C Way
obj.addEventListener( type, fn, true ); //最后一个参数设为true,则只有在事件传播的捕获阶段,指定的listener才会被调用 } else if ( obj.attachEvent ) {
//The Microsoft Way
obj['e'+type+fn] = fn;
obj[type+fn] = function(){obj['e'+type+fn]( window.event );}
obj.attachEvent( 'on'+type, obj[type+fn] );
} else {
return false;
}
} var counter = 0; // Grab all the unordered lists
var lists = document.getElementsByTagName('ul');
for(var i = 0 ; i < lists.length ; i++ ) { // Register an event listener for the click event
modifiedAddEvent(lists[i],'click',function() {
// Append the click order to the paragraph
var append = document.createTextNode(':' + counter++);
this.getElementsByTagName('p')[0].appendChild(append); // Change the class name to reveal the clicked elements
this.className = 'clicked';
});
} }
</script>
</head>
<body onload="init()">
<h1>Event Flow</h1> <div id="content">
<ul id="list1">
<li>
<p>List 1 </p>
<ul id="list2">
<li>
<p>List 2 </p>
<ul id="list3">
<li>
<p>List 3 </p>
</li>
</ul>
</li>
</ul>
</li>
</ul> <ul id="list4">
<p>List 4 </p>
</ul>
</div> </body> </html>

2.在chrome中运行

3.在IE8中运行

4.如果将上面的modifiedAddEvent函数中的 obj.addEventListener( type, fn, true)最后一个参数设为false,则在chrome中的结果与在IE8中的相同。

最后一个参数设为false,说明指定的listener是在冒泡阶段被调用。也就是说此时的事件模型与IE相同,所以两者结果相同。

5.把css文件附上。通过设置css,把list3放在了list4中。

 #content {
width: 90%;
}
ul {
padding:10px;
margin:0; border:1px dotted black;
background-color:white;
list-style:none;
}
p {
margin: 0;
font-size:1.2em;
font-weight: bold;
} .clicked {
background: #ffcf54;
} #list1 {
height:80px;
}
#list2 {
margin-top: 10px;
height:20px;
} #list3 {
position:absolute;
top:190px;
left:150px;
} #list4 {
margin-top:10px;
height:100px;
}

javaScript高级教程(五) Event Flow的更多相关文章

  1. JavaScript高级教程

    JavaScript高级教程 基础总结深入 数据类型 分类 you are so nb! undefined :undefined string :任意字符串 sybmol: object:任意对象, ...

  2. javaScript高级教程(八)-----正则表达式温故知新

    1.RegExp对象:五个属性二个方法 五个属性:global, ignoreCase,multiline,lastIndex,source 二个方法: exec()--模式匹配 test()--检测 ...

  3. javascript高级教程:如何优化javascript代码性能

    在web前端开发中,为实现一些动态效果,减小页面大小,我们一般都会使用JavaScript技术来进行相关设置.但是初学者在编写JavaScript代码的时候,往往都是比较低质的代码,那如何才能提高Ja ...

  4. JavaScript高级程序设计(五): js的关键字instanceof和typeof使用

    JavaScript中instanceof和typeof 常用来判断一个变量是否为空,或者是什么类型的.但它们之间还是有区别的: 一.typeof 1.含义:typeof返回一个表达式的数据类型的字符 ...

  5. 《JavaScript高级教程》学习笔记一、变量和数据类型

    JavaScript的核心语言特性在ECMA-262中是以名为ECMAScript的伪语言的形式来定义的. 一.变量和数据类型 1. 变量 JavaSript是弱类型语言,可以通过var定义任何类型变 ...

  6. javaScript高级教程(九) ------javascript对象字面量--------困扰已久的问题

    在编程语言中,字面量是一种表示值的记法.例如,"Hello, World!" 在许多语言中都表示一个字符串字面量(string literal ),JavaScript也不例外. ...

  7. javaScript高级教程(七)正则表达式中括号三种常见作用

    括号用来将子表达式标记起来,以区别于其他表达式 比如很多的命令行程序都提供帮助命令,键入 h 和键入 help 的意义是一样的,那么就会有这样的表达式: h(elp)? 字符h之后的elp可有可无这里 ...

  8. javaScript高级教程(二)Scope Chain & Closure Example

    <!DOCTYPE html> <html> <head> <meta charset=gb2312 /> <title>js</ti ...

  9. javascript 高级程序设计 五

    1.变量: ECMAScript中的基本类型都是值类型Boolean,Number,Null,Undefined和String,在这里JS和其他的语言有所不同,就是JS中的String是值类型 而不像 ...

随机推荐

  1. Bugly最简单的配置方法

    1,注册Bugly帐号 2.项目 build.gradle 中配置 compile 'com.tencent.bugly:crashreport:latest.release'//其中latest.r ...

  2. 《Mysql 入门很简单》(读后感②)

    接上篇~ 1.UNIX时间戳函数: UNIX_TIMESTAMP()函数以UNIX时间戳的形式返回当前时间: UNIX_TIMESTAMP(d)函数将时间d以UNIX时间戳的形式返回: FROM_UN ...

  3. <转>github入门到上传本地项目

    转自 http://www.cnblogs.com/specter45/p/github.html GitHub是基于git实现的代码托管.git是目前最好用的版本控制系统了,非常受欢迎,比之svn更 ...

  4. 《转》Python学习(17)-python函数基础部分

    http://www.cnblogs.com/BeginMan/p/3171977.html 一.什么是函数.方法.过程 推荐阅读:http://www.cnblogs.com/snandy/arch ...

  5. 关于使用Delphi XE10 进行android开发的一些总结

    RAD,可以快速开发出来,但是问题较多最好别用 说实话    做出来的app 太!大!了!  十分的特别的占内存!       FireMonkey 真心太大了...  太占内存了  开发一般应用还可 ...

  6. IE(兼容问题)错误:缺少标识符 字符串或数字的解决

    在IE上遇到一个问题,缺少标识符 字符串或数字的解决. 问题是我的html页面在Firefox.chorme中运行正常,而在IE中老是报“缺少标识符 字符串或数字”的错误,原因: 这就是IE和Fire ...

  7. 【大数据系列】windows下连接Linux环境开发

    一.配置文件 1.core-site.xml <configuration> <property> <name>fs.defaultFS</name> ...

  8. ASP.NET Session 简单超实用使用总结

    一.概述 Session用于存储特定的用户会话所需的信息 . Session对象的引入是为了弥补HTTP协议的不足,HTTP协议是一种无状态的协议. Session中文是“会话”的意思,在ASP.NE ...

  9. MAC - 系统升级导致COCOAPODS失效问题

    使用pod install出现如下错误: macdeMacBook-Pro:QRCodeDemo mac$ pod install -bash: /usr/local/bin/pod: /System ...

  10. iOS - 沙盒机制(SandBox)和获取沙盒路径

    iOSAPP可以在自己的沙盒里读写文件,但是,不可以访问其他APP的沙盒.每一个APP都是一个信息孤岛,相互是不可以进行通信的,唯独可以通过URLScheme.沙盒里面的文件可以是照片.声音文件.文本 ...