JavaScript事件流

    事件是DOM的重要的组成部分,不幸的是在DOM的level 1中并没有定义任何的事件,level 2中之定义了一小部分,直到level 3 中才把事件模型定义完成。IE首先在自己的4.0版本中实现了自己的事件模型,但是在以后的版本中并没有做大的改动,DOM最终确立的标准是吸收了IE的模型,并加以改进完成,mozilla保持了跟DOM做好的实现接近,Opera和Dafari也实现了DOM标准的时间模型,IE成了使用一种专有事件模型的主流浏览器。

    时间流的出现意味着在页面上可有不仅一个元素相应同一个时间,而是按照一定的顺序响应该事件。 

    IE中使用的冒泡型事件:

   <html  οnclick="handleclick()">        

        <head><title>Example</title></head>

        <body οnclick="handleclick()">

            <div οnclick="handleclick()">Click Me</div>

        </body>

    </html> 

    在IE6中,当点击div元素时,事件首先在div上发生,之后将上升到body标签中,接着传到html标签,最后到document,这就是所谓的冒泡型事件,在IE5中是没有html标签层的事件的,所以如果不确定是IE5还是IE6的话,最好不用html元素级别上处理事件。

      Mozilla浏览器也支持冒泡型事件,跟IE6的事件模型向下类似,但是支持的级别达到了window的层次,也就是说可以在window对象上使用事件处理函数。

  捕获型事件:

    捕获型事件跟冒泡型事件正好相反,是从做不精确的元素开始发生,还是一上面的代码为例,事件的发生顺序为window->document->html->body->div

DOM定义的标准事件流:

    dom支持冒泡型事件和捕获型事件,捕获型的事件发生在前,冒泡在后,标准中所定义的事件的最高标准是document,但是兼容dom标准的浏览器一般都实现到了window层,在上面的例子中,事件发生的顺序是

        window->document->body->div->div->body->document->window

注意:1.该顺序中没有html级别的事件(待考证)2.事件在目标元素上是连续接收了两次事件,捕获在前,冒泡在后

            3.DOM标准中定义的事件是可以到达文本节点的级别的,就是说如果点击了div中的文本,那么也要发生下面的事件流的

                window->document->body->div->text->text->div->body->document->window

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值