弹出的iframe 表单无法获取焦点
2012-10-12 15:40
423 查看
昨天被朋友问到这个问题,说一个弹窗里面包含一个编辑字段的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而不和内存中的残留冲突了。
开始怀疑是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而不和内存中的残留冲突了。
相关文章推荐
- IE中Iframe弹出层 造成无法获取焦点的解决办法
- bootstrap弹出的modal中表单控件无法获取焦点
- 使用Layer弹出iframe表单窗口,有几率无法成功提交表单问题解决
- bootstrap-modal:弹出modal时input的checked的状态无法改变 | | input获取焦点不生效
- webview 中的文本框无法获取焦点弹出文本框
- ligerUI调用$.ligerDialog.open弹出窗口,关闭后无法获取焦点问题
- ligerUI调用$.ligerDialog.open弹出窗口,关闭后无法获取焦点问题
- ligerUI调用$.ligerDialog.open弹出窗口,关闭后无法获取焦点问题
- kindeditor在dialog弹出框,无法编辑,不能获取焦点
- ligerUI调用$.ligerDialog.open弹出窗口,关闭后无法获取焦点问题
- Android 点击listView的item弹出软键盘并且EditText获取焦点
- kindeditor在dialog弹出框中无法获得焦点
- 如何在Iframe中获取父窗口中表单的值
- HTML5实战与剖析之表单——自动获取焦点属性(autofocus属性)
- Android实现横屏状态下通过代码弹出EditText并获取焦点弹出软键盘
- infopath表单预览正常,发布后无法通过Web Service获取当前用户信息的解决方案
- popuWindow 底部弹出输入框并获取焦点,软件盘自动弹起和关闭
- EditText获取焦点并弹出软键盘
- 第27天:js-表单获取焦点和数组声明遍历
- 进入Activity的时候隐藏软键盘当获取到焦点的时候弹出软键盘