弹出的iframe 表单无法获取焦点

昨天被朋友问到这个问题,

说一个弹窗里面包含一个编辑字段的iframe,在IE下面 第二次弹出的时候,弹窗中的元素便不能获取焦点。

开始怀疑是z-index的原因,修改无效。

后来搜索到这篇文章: 

http://www.dewen.org/q/2662

 

明白了原因,也就是关闭弹窗的时候 简单的移除了弹窗,没有对iframe进行清理,这样内存里面相当于还有一份iframe的实例,

这就造成了第二次弹窗 元素无法获取焦点。

解决方法可以参照上面这篇文章,没有亲自验证。

对于关闭按钮存在于弹出的iframe中的,可以在父层窗口准备一个移除iframe的方法,在关闭的时候运行一下,销毁需要关闭的iframe实例。

 

var clearIframe = function(f){
            try{
                f.contentWindow.document.write('');
                f.contentWindow.close();
f.parentNode.removeChild(frame);
            }catch(e){}

        };  

 

var close = function(){ if(typeof top.clearIframe == 'function'){ top.clearIframe(self) }  /*...其他要做的...*/ };

这样再弹出的就是新的iframe而不和内存中的残留冲突了。 

 

 

posted on 2012-10-12 15:40  trance  阅读(2387)  评论(0编辑  收藏  举报

导航