您现在的位置:首页 --> JavaScript --> ie下iframe输入框焦点丢失解决方案
ie下iframe输入框焦点丢失解决方案
浏览:4310次 出处信息
在弹出层包含富编辑器时(既含有iframe时),点击窗体任何部分,然后关闭弹出层后再次打开弹出层。这时候页面所有输入框input无法获得焦点但是链接、按钮都可以获取到,页面也不报任何错误。这种情况只是在IE下出现,我想是dom冲突了。
解决方法:
关于弹出层关闭,一般有两种方式:一是利用div隐藏或显示来控制弹出层的显示与隐藏;二是利用DOM直接移除弹出层。
第二种比较好,资料这样说
“ IE 下在移除父层的 DIV 的时候,也就是 IFrame 外层的 DIV 的时候,IE 并没有将内部的 IFrame 从 DOM 中移除,而下次触发函数创建此 IFrame 的时候,使会产生 DOM 冲突,所以解决方法就是在移除父层的 DIV 的时候,先将内部的 IFrame 也移除”
根据上面说法,我在点击“关闭”按钮时执行下面代码:
document.body.removeChild(document.getElementById("iframeBox"));//移除iframe document.body.removeChild(document.getElementById(“divId”));//移除iframe父div
但是还是没解决上面的bug,其实我理解的是当移除某个元素时,出现上面bug是因为该元素并没有从内存中移除,后来发现一个CollectGarbage()函数,该函数是强制回收内存。在移除相应元素后执行该方法,强制回收内存;但是这个函数只是在IE下面才能识别的,所以要判断浏览器是否是ie才可以。这样可以解决问题。
其实有个更简单的方法,在销毁iframe之后或创建iframe后,设置一个input焦点,这样就不用判断浏览器了,直接在iframe里添加一句:
document.getElementById("username").focus();
建议继续学习:
- iframe大小自适应 (阅读:8883)
- iframe里src="about:blank"的问题。 (阅读:6863)
- 跨域请求的iframe解决方案(1) (阅读:5409)
- BO报表系统嵌入Iframe在firefox下的错误修改 (阅读:4644)
- 三谈Iframe自适应高度 (阅读:3651)
- Google+开发团队分享经验 (阅读:3366)
- 使用document.domain和iframe实现站内AJAX跨域 (阅读:3330)
- 跨域请求的iframe解决方案(2) (阅读:3164)
- iframe自适应高度代码 (阅读:2823)
- IFrame带来的Session问题 (阅读:2812)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
扫一扫订阅我的微信号:IT技术博客大学习
<< 前一篇:简单js+css实现模拟自定义select样式
后一篇:巧解 JavaScript 中的嵌套替换 >>
文章信息
- 作者:九监九介 来源: 深海博客
- 标签: iframe 焦点
- 发布时间:2012-09-20 13:53:30
建议继续学习
近3天十大热文
- [70] Twitter/微博客的学习摘要
- [66] 如何拿下简短的域名
- [65] IOS安全–浅谈关于IOS加固的几种方法
- [64] find命令的一点注意事项
- [63] android 开发入门
- [63] Go Reflect 性能
- [61] 流程管理与用户研究
- [59] Oracle MTS模式下 进程地址与会话信
- [59] 图书馆的世界纪录
- [59] 读书笔记-壹百度:百度十年千倍的29条法则