IE下,事件冒泡二三事
2009-04-29 01:52
183 查看
请先看测试页面:event-bubbling-test.html
IE下,某些事件类型,比如propertychange,不会产生冒泡。
IE下,移除自身的事件,冒泡会被终止。
上一条的解决办法是,将移除自身的操作放在setTimeout里,排队到线程后面。
IE里,setTimeout会改变执行环境,比如Event.getTarget(ev)放在里面将导致错误。
将Event.getTarget(ev)放在setTimeout外面,则一切ok.
总之,IE下,采用父级容器来代理捕捉冒泡事件时,要小心谨慎,多加测试。
附加一点小感慨:阻止链接a的默认事件时,用preventDefault足矣,stopEvent会对之后的扩展带来麻烦。
对于事件代理,可以参阅这篇文章:JavaScript事件代理比你想象中的简单
对于setTimeout,可以看看这篇心得:对How JavaScript Timers
Work的理解
结论:
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的理解
相关文章推荐
- IE和火狐的事件机制有什么区别?如何阻止冒泡?
- js添加事件、移除事件、阻止冒泡、阻止浏览器默认行为等写法(兼容IE/FF/CHROME)
- 处理事件冒泡,阻止默认事件工具类,兼容IE
- JS中的事件绑定,事件捕获,事件冒泡以及事件委托,兼容IE
- js阻止浏览器的默认行为以及停止事件冒泡(用JQuery实现回车提交,兼容IE、FF浏览器)
- jquery 事件冒泡 解决 ie firefox 兼容性问题
- 阻止浏览器默认行为和冒泡事件兼容ie,ff
- IE与火狐下兼容(阻止冒泡事件)
- JS中的事件绑定,事件捕获,事件冒泡以及事件委托,兼容IE
- 标签中事件在js中获取,阻止冒泡和默认事件。兼容ie
- JS阻止冒泡事件和默认事件(IE和其他浏览器兼容)
- JS中的事件绑定,事件捕获,事件冒泡以及事件委托,兼容IE
- table,td点击事件冒泡。禁止ie,firefox中事件冒泡。
- 事件流:DOM事件与IE事件,事件冒泡与事件捕获
- js添加事件、移除事件、阻止冒泡、阻止浏览器默认行为等写法(兼容IE/FF/CHROME)
- js控制点击事件冒泡,兼容ie火狐苹果
- js-事件捕获与事件冒泡原理 IE和DOM之间存在哪些主要差别
- 阻止浏览器冒泡事件,兼容firefox和ie
- js阻止浏览器的默认行为以及停止事件冒泡(用JQuery实现回车提交,兼容IE、FF浏览器)
- JQuery IE下如何阻止keydown事件冒泡