这篇文章主要为大家详细介绍了 javascript 事件的传播基础实例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
Javascript 是一种由 Netscape 的 LiveScript 发展而来的原型化继承的基于对象的动态类型的区分大小写的客户端脚本语言,主要目的是为了解决服务器端语言,比如 Perl,遗留的速度问题,为客户提供更流畅的浏览效果。
- <html>
- <head>
- <meta charset="UTF-8">
- <title></title>
- <style type="text/CSS">
- #box1{
- width: 300px;
- height: 300px;
- background-color: deepskyblue;
- }
- #box2{
- width: 200px;
- height: 200px;
- background-color: cadetblue;
- }
- #box3{
- width: 100px;
- height: 100px;
- background-color: chocolate;
- }
- </style>
- <script type="text/javascript">
- function bind(obj , eventStr , callback){
- if(obj.addEventListener){
- //如果是正常浏览器
- obj.addEventListener(eventStr , callback , false);
- }else{
- //IE8
- obj.attachEvent("on"+eventStr , function(){
- callback.call(obj);
- });
- }
- }
- window.onload = function(){
- /*
- * 事件的传播
- * - 关于事件的传播微软和网景公司有着不同的理解
- * - 微软公司,认为事件应该是从后代元素向祖先元素传播,即从里向外传播,也就是我们所谓事件的冒泡
- * - 网景公司,认为事件应该是从祖先元素向后代元素传播,即从外向里传播,这一阶段我们称为事件的捕获
- * - W3C综合了两个公司的方案,将事件的传播分成了三个阶段
- * 1.捕获阶段
- * - 事件从最外层的元素(document),向目标元素进行事件的捕获
- * - 此阶段默认不会触发事件
- * 2.目标阶段
- * - 目标指的是触发事件的元素,捕获到目标元素则捕获阶段停止
- * 3.冒泡阶段
- * - 事件从目标元素向祖先元素中冒泡,此时开始触发事件
- * - 默认事件都是在冒泡阶段执行的
- *
- * - 事件都是默认在冒泡阶段执行的,一般不需要在捕获阶段触发事件,
- * 如果希望在捕获阶段执行事件,则需要将addEventListener()的第三个参数修改为true
- *
- * - IE8及以下的浏览器没有捕获阶段,也不能设置在捕获阶段触发事件
- */
- //分别为三个div绑定单击响应函数
- var box1 = document.getElementById("box1");
- var box2 = document.getElementById("box2");
- var box3 = document.getElementById("box3");
- bind(box1,"click",function(){
- alert(1);
- })
- bind(box2,"click",function(){
- alert(2);
- })
- bind(box3,"click",function(){
- alert(3);
- })
- };
- </script>
- </head>
- <body>
- <div id="box1">
- <div id="box2">
- <div id="box3"></div>
- </div>
- </div>
- </body>
- </html>
来源: http://www.phperz.com/article/17/0517/327664.html