事件顺序
在进一步讨论之前,很有必要介绍一下事件顺序。如果一个节点和它的一个父节点都绑定了相同事件类型的回调,当事件触发时哪个回调会先执行?尽管网景和微软的处理方式不一致,也不要太过担心。
Netscape 4 支持事件捕捉(capturing),从顶层的父节点开始触发事件,从外到内传播。微软则支持事件冒泡(bubbling),从最内层的节点开始触发事件,逐级冒泡直到顶层节点,从内向外传播。
我认为事件冒泡看起来更合理一些,这也是我们日常开发所用的事件模型。W3C 对此做了让步,将对这两种事件模型的支持都加入标准规范之中。根据W3C 模型,事件首先被目标元素所捕捉,然后向上冒泡。
广州网站建设,广州网站设计,广州网站制作,网站建设,网站设计,广州网站建设公司,广州网站设计公司
你可以自行选择要注册的事件处理程序的调用类型,捕捉或冒泡,通过给addEvent-Listener() 传入第3 个参数useCapture 来设置。如果addEventListener() 的最后一个参数是true,事件处理程序以捕捉模式触发;如果是false,事件处理程序以冒泡模式触发:
- // 给最后一个参数传入false,来设置事件冒泡
- button.addEventListener("click", function(){ /* ... */ }, false);
大多数情况下我们都在使用冒泡模式,如果对此不太确定,可以给addEventListener()的最后一个参数传入false。