您的位置:首页 > 其它

IE下,事件冒泡二三事

2009-04-29 01:52 183 查看
请先看测试页面: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的理解
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: