之前用JQuery开发了一个弹出框的插件,可用于Pop页面,里面是用的Iframe。但是最近用IE测试发现,第一次弹出Pop页面可以正常使用,关闭Pop页面,再次打开后,页面中的input文本框无法落入光标,导致没办法输入。苦思许久,百度谷歌了许久,最后终于解决了。
Chrome测试没有问题,IE有,那证明是IE的问题了。果然,是IE的问题。我们知道,关闭Pop页面其实就是从dom中把Pop这个Div移除。但是IE移除了Div,可Div里面的iframe还在Dom树上,当再次弹出Pop页面又会创建iframe,这时会冲突,因此就造成了input无法落入光标的问题,这应该是IE的一个Bug。
解决办法:在关闭Pop的js代码中,手动Remove掉iframe。另外最好把iframe的src指定为空。可以添加类似这样的代码:
其中dl是代表弹出框的那个Div。
var $dliframe = dl.find("iframe"); if ($dliframe) { $dliframe.attr("src", ""); $dliframe.remove(); }