前些天在制作一个 jQuery 插件 Openbox 的时候,由于弹出的模拟窗口是 DIV 内嵌套 iframe 或者 AJAX 方式将内容载入到 DIV 中,在 ie 下测试的时候,由 IFrame 方式打开的窗口内部的文本输入框总是会出现无法聚焦输入的状况,在其它浏览器下却没有此问题,我非常郁闷,
后来仍然是国外的一个网站上的讯息解决了此问题,原因是 IE 下在移除父层的 DIV 的时候,也就是 IFrame 外层的 DIV 的时候,IE 并没有将内部的 IFrame 从 DOM 中移除,而下次触发函数创建此 IFrame 的时候,使会产生 DOM 冲突,所以解决方法就是在移除父层的 DIV 的时候,先将内部的 IFrame 也移除,于是问题解决了..
不过这个是 IE 下的 BUG,正常情况下在移除一个元素的时候,其子节点下的元素应该是全部会被从 DOM 中移除的,但是无论如何,还是建议先移除子节点下的重要元素,毕竟这也不影响其它的浏览器.
后来仍然是国外的一个网站上的讯息解决了此问题,原因是 IE 下在移除父层的 DIV 的时候,也就是 IFrame 外层的 DIV 的时候,IE 并没有将内部的 IFrame 从 DOM 中移除,而下次触发函数创建此 IFrame 的时候,使会产生 DOM 冲突,所以解决方法就是在移除父层的 DIV 的时候,先将内部的 IFrame 也移除,于是问题解决了..
不过这个是 IE 下的 BUG,正常情况下在移除一个元素的时候,其子节点下的元素应该是全部会被从 DOM 中移除的,但是无论如何,还是建议先移除子节点下的重要元素,毕竟这也不影响其它的浏览器.
本文探讨了在使用jQuery插件Openbox时遇到的IE浏览器下iframe内部文本输入框无法聚焦的问题。通过分析发现,这是由于IE在移除包含iframe的父层DIV时未正确清理DOM导致的。解决方案是在移除父层DIV前先移除iframe。
1104

被折叠的 条评论
为什么被折叠?



