弹出的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而不和内存中的残留冲突了。