IE下,事件冒泡二三事
请先看测试页面:event_bubbling_test.html
结论:
- IE下,父级容器只接收自身也有的冒泡事件。
- IE下,某些事件类型,比如propertychange,不会产生冒泡。
- IE下,移除自身的事件,冒泡会被终止。
- 上一条的解决办法是,将移除自身的操作放在setTimeout里,排队到线程后面。
- IE里,setTimeout会改变执行环境,比如Event.getTarget(ev)放在里面将导致错误。
- 将Event.getTarget(ev)放在setTimeout外面,则一切ok.
总之,IE下,采用父级容器来代理捕捉冒泡事件时,要小心谨慎,多加测试。
附加一点小感慨:阻止链接a的默认事件时,用preventDefault足矣,stopEvent会对之后的扩展带来麻烦。
对于事件代理,可以参阅这篇文章:JavaScript事件代理比你想象中的简单
对于setTimeout,可以看看这篇心得:对How JavaScript Timers Work的理解

April 21st, 2009 on 9:26
现在好多浏览器,更新也是很快的….
April 21st, 2009 on 15:30
完全不了解。。。
September 13th, 2009 on 16:29
文本节点也会产生事件冒泡…
leave a reply