JavaScript事件模型

来源:互联网 发布:自考培训机构 知乎 编辑:程序博客网 时间:2024/05/18 00:09

原文在 http://www.cnblogs.com/1wen/p/5640997.html我增加上我的例子 并且进行了理解JavaScript事件模型

下面的代码是我写的,上面的部分知识总结不是我写的,知识为了更好的理解这个点,写了个例子而已,针对于事件冒泡


JavaScript事件模型

  在各种浏览器中存在三种事件模型: 原始事件模型 , DOM2事件模型 , IE事件模型。

其中原始的事件模型被所有浏览器所支持,而DOM2中所定义的事件模型目前被除了IE以外的所有主流浏览器支持.

  原始事件模型:

 在原始事件模型中(也有说DOM0级),事件发生后没有传播的概念,没有事件流。事件发生,处理,结束,就这么简单。

监听函数只是元素的一个属性值,通过指定元素的属性值来绑定监听器。书写方式有两种:

    (1)   HTML代码中指定属性值:

    (2)   在js代码中指定属性值:document.getElementsByTagName(‘input’)[0].onclick = func

    优点:所有浏览器都兼容

    缺点:

      1.逻辑与显示没有分离

      2.相同事件的监听函数只能绑定一个,后绑定的会覆盖掉前面的

      3.无法通过事件的冒泡、委托等机制。

DOM2事件模型

    此模型是W3C制定的标准模型。W3C制定的事件模型中,一次事件的发生包含三个过程:

    (1)事件捕获阶段。事件被从document一直向下传播到目标元素,

                            在这过程中依次检查经过的节点是否注册了该事件的监听函数,若有则执行。

    (2)事件处理阶段。事件到达目标元素,执行目标元素的事件处理函数.

    (3)事件冒泡阶段。事件从目标元素上升一直到达document,同样依次检查经过的节点是否注册了该事件的监听函数,

有则执行。

    所有的事件类型都会经历 "事件捕获阶段" 但是只有部分事件会经历 "事件冒泡阶段" 阶段,

例如submit事件就不会被冒泡。 

<body>FirstController.jsp如果 li和span 都加上 onclick 的话那么点击span 会向上冒泡,li 的点击事件也会触发如果只有span有onclick事件的话,那么只有 spanclick 会触发<pre style="background-color: rgb(255, 255, 255); font-family: 宋体; font-size: 9pt;">实例代码<li onclick="liclick()">  <span onclick="spanclick()">事件冒泡测试</span></li><script type="application/javascript">  function spanclick(){    alert(" wo shi span");  }  function liclick(){    alert(" wo shi li");  }</script></body>



0 0
原创粉丝点击