javascript事件流讲解和实例应用

当页面元素触发事件的时候,该元素的容器以及整个页面都会按照特定
  顺序响应该元素的触发事件,事件传播的顺序叫做事件流。

一、事件流的分类

1.冒泡型事件(所有的浏览器都支持 w3c标准)
        
      由明确的事件源到最不确定的事件源依次向上触发,有内向外。

2.捕获型事件(IE不支持 w3c标准 火狐)
      不确定的事件源到明确的事件源依次向下触发,由外向内。
       addEventListener(事件,处理函数,false)
       addEventListener(事件,处理函数,true)

二、阻止事件流
   
    IE:
    事件对象.cancelBubble=true;   
    FF:
     事件对象.stopPropagation();

三、目标事件源的对象
    IE:事件对象.srcElement
    FF:事件对象.target
例:
<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <style type="text/css">
    table {
        margin: 0 auto;
    }
    td{
        text-align: center;
    }
    </style>
    <script type="text/javascript">
        window.onload = function (){
            var tbl = document.getElementById("tbl");
            tbl.ondblclick = function(e){
                var vc = e || window.event;
                var ov = vc.srcElement || vc.target;
                if(ov.nodeName == "TH"){
                    return;
                }
                var oldstr = ov.innerHTML;
                var txts = document.createElement("input");
                txts.type = "text";
                ov.innerHTML = "";
                ov.appendChild(txts);
                txts.focus();
                txts.onblur = txts.ondblclick = txts.onkeydown = function(e){
                    var vc = e || window.event;
                    if(vc.type == "blur" || (vc.type == "keydown" && vc.keyCode == "13")){
                        var str;
                        if(txts.value.trim() == ""){
                            str = oldstr;
                        }else{
                            str = txts.value;
                        }
                        ov.removeChild(txts);
                        ov.innerHTML = str;
                    }
                }
            }
        }
    </script>
</head>
<body>
       <table id="tbl" border="1" width="700" cellpadding="10" cellspacing="0" >
           <caption>学生成绩单</caption>
           <tr>
               <th>姓名</th>
               <th>年龄</th>
               <th>性别</th>
               <th>科目</th>
               <th>分数</th>
           </tr>
           <tr >
               <td>张三</td>
               <td>21</td>
               <td>男</td>
               <td>JavaScript</td>
               <td>86</td>
           </tr>
                        </table>
</body>
</html>

时间: 2024-10-16 08:40:25

javascript事件流讲解和实例应用的相关文章

JavaScript事件流原理解析

一.为什么会有这一篇的文章 国庆前几天由于任务比较重,要赶在国庆前把一个进度的任务开发完成,所以也就有点赶,但是却遇到了一个比较奇怪的Bug,导致了任务比预计的延迟了几个小时,对此深表遗憾,所以利用国庆的这段时间来补一补这个不足,也为了国庆后能够更好的完成公司的业务打下基础 二.大致了解什么是JavaScript事件流 首先这里先来举一个例子 <!DOCTYPE html> <html lang="en"> <head> <meta chars

JavaScript——事件流(事件冒泡和事件捕获)

1.事件流 当浏览器发展到第4代时,浏览器开发团队遇到了一个问题:页面中的哪个元素会拥有某个特定的事件?当你单击某个按钮时,显然该单击事件并不仅仅发生在按钮上,它还发生在按钮的所有祖先元素上,比如按钮的容器元素,容器元素的父元素,甚至整个页面document.但是,哪个元素最先接收到该事件呢?页面接收事件的顺序又是怎样的呢?由此引出了事件流的概念.事件流描述的就是从页面中接收事件的顺序. 2.两个模型 Netscape和Microsoft给出了两个不同的结论.Netscape说document会

javascript事件流

摘要:事件流这个东西是比较重要的,为了让自己更加理解js中的事件流,必须整理整理,梳理一下事件流的各种东西啊.本文大部分内容参考<javascript高级程序设计第三版> 先来一段书里的原文: 当浏览器发展到第四代时(IE4和Netscape Communicator 4),浏览器团队遇到一个很有意思的问题:页面的哪一部分会拥有特定的事件?想象下在一张纸上有一组同心圆,如果你把手指放在圆心上,那么你的手指指向的不是一个圆,而是一组圆.两家公司的开发团队在看待浏览器事件方面还是一致的.如果你单击

浅析JavaScript事件流——冒泡

一.什么是事件冒泡流 我们知道事件流指的是从页面中接受事件的顺序. 为了形象理解事件冒泡,可以想象三军主将诸葛亮,在帐内运筹帷幄,眼观六路耳听八方,这时候前方的战事情况就需要靠传令兵来传达,当第一位传令兵接到士官战事信息,打出旗语,百米之外的第二个传令兵看到后打出同样的旗语,第三个,第四个....,直到信息传到诸葛亮手中.用专业术语解释就是:当一个元素上的事件被触发的时候,比如说鼠标点击了一个按钮,同样的事件将会在那个元素的所有祖先元素中被触发.这一过程被称为事件冒泡:这个事件从原始元素开始一直

深入理解javascript事件流

摘要:事件流这个东西是比较重要的,为了让自己更加理解js中的事件流,必须整理整理,梳理一下事件流的各种东西啊.本文大部分内容参考<javascript高级程序设计第三版> 先来一段书里的原文: 当浏览器发展到第四代时(IE4和Netscape Communicator 4),浏览器团队遇到一个很有意思的问题:页面的哪一部分会拥有特定的事件?想象下在一张纸上有一组同心圆,如果你把手指放在圆心上,那么你的手指指向的不是一个圆,而是一组圆.两家公司的开发团队在看待浏览器事件方面还是一致的.如果你单击

深入了解javascript事件流

摘要:事件流这个东西是比较重要的,为了让自己更加理解js中的事件流,必须整理整理,梳理一下事件流的各种东西啊.本文大部分内容参考<javascript高级程序设计第三版> 先来一段书里的原文: 当浏览器发展到第四代时(IE4和Netscape Communicator 4),浏览器团队遇到一个很有意思的问题:页面的哪一部分会拥有特定的事件?想象下在一张纸上有一组同心圆,如果你把手指放在圆心上,那么你的手指指向的不是一个圆,而是一组圆.两家公司的开发团队在看待浏览器事件方面还是一致的.如果你单击

javaScript事件流是什么?

一.事件 事件是文档或者浏览器窗口中发生的,特定的交互瞬间. 事件是用户或浏览器自身执行的某种动作,如click,load和mouseover都是事件的名字. 事件是javaScript和DOM之间交互的桥梁. 你若触发,我便执行--事件发生,调用它的处理函数执行相应的JavaScript代码给出响应. 典型的例子有:页面加载完毕触发load事件:用户单击元素,触发click事件. 二.事件流 事件流描述的是从页面中接收事件的顺序. 1.事件流感性认识 问题:单击页面元素,什么样的元素能感应到这

Javascript事件流详解

1.事件流 描述的是从文档页面接受事件的顺序. 冒泡事件流:即事件最开始由最具体的元素(文档中嵌套层次最深的那个节点)接收,然后逐级向上传播至最不具体的那个节点(文档). 捕获事件流:不太具体的节点应该更早接收到事件,而最具体的节点最后接收到事件. 2.事件处理程序 (1)HTML事件处理程序 (2)DOM0级事件处理程序 较为传统的方式:把一个函数值赋值给一个事件处理程序的属性.这种方法用的比较多,主要是因为它简单而且支持跨浏览器: (3)DOM2级事件处理程序 DOM2级的事件定义了两个方法

javascript 事件大全讲解

事件 一般事件 onclick 鼠标点击时触发此事件 ondblclick 鼠标双击时触发此事件 onmousedown 按下鼠标时触发此事件 onmouseup 鼠标按下后松开鼠标时触发此事件 onmouseover 当鼠标移动到某对象范围的上方时触发此事件 onmousemove 鼠标移动时触发此事件 onmouseout 当鼠标离开某对象范围时触发此事件 onkeypress 当键盘上的某个键被按下并且释放时触发此事件. onkeydown 当键盘上某个按键被按下时触发此事件 onkeyu