前些天在制作一个 jQuery 插件 弹出框 的时候,由于弹出的模拟窗口是 DIV 内嵌套 iframe 或者 AJAX 方式将内容载入到 DIV 中,在 ie 下测试的时候,由 IFrame 方式打开的窗口内部的文本输入框总是会出现无法聚焦输入的状况,(点击TAB又可以获取焦点)在其它浏览器下却没有此问题,我非常郁闷,
后来仍然是国外的一个网站上的讯息解决了此问题,原因是 IE 下在移除父层的 DIV 的时候,也就是 IFrame 外层的 DIV 的时候,IE 并没有将内部的 IFrame 从 DOM 中移除,而下次触发函数创建此 IFrame 的时候,使会产生 DOM 冲突,所以解决方法就是在移除父层的 DIV 的时候,先将内部的 IFrame 也移除,于是问题解决了..
不过这个是 IE 下的 BUG,正常情况下在移除一个元素的时候,其子节点下的元素应该是全部会被从 DOM 中移除的,但是无论如何,还是建议先移除子节点下的重要元素,毕竟这也不影响其它的浏览器.
后面我的解决办法:在关闭弹出窗体事件 box.remove(); 前面加入box.find('iframe').remove();