IE6 弹出Iframe层中的文本框“经常”无法获得输入焦点


Posted in Javascript onDecember 27, 2009

公司WEB项目要求是必须兼容FF3,IE6/7/8。本文所述为IE6下的一个BUG.

项目里面写了一个自己封装的弹出层,原理是先动态添加一个遮罩层,再动态添加一个DIV(Table)层(做弹出层的PNG半透明边框效果),DIV里面动态添加一个IFrame,这个Iframe页面指向一个现存的HTM文件。

如果这个HTM文件中,包含文本输入框这样的一些表单元素,在IE6下就会出娄子了。

测试组的人说了,弹出层打开后,“经常”无法获取文本框的焦点,就是鼠标点文本框无法获取焦点并显示输入标记,仿佛被什么透明层给盖住了。但有时是正常的,可谓间歇性精神障碍。有的机子上百分之五十的几率出现,有的机子上百分之三十左右的几率出现。

少不了得做一番测试和分析了。

经我在虚拟机IE6测试,也发现的确如测试组的人所说。

我确信不可能有多余的覆盖层,因为除文本框之外,它周围的任何文字都可以正常的用鼠标选中,它周围的任何元素包括这个文本框本身也能响应onclick事件,只是无论怎么点,都无法获取输入焦点。(文本框没有设置readOnly或者disabled)

但是,某些小动作就可以让它们恢复正常,比如在这个Iframe里右键刷新一下,或者是在这个Iframe里按'TAB'键将焦点切换到任何一个文本框,这时,所有的文本框都可以用点击正常获得焦点了。还真是变态!

咱总不能说这是IE6的BUG我们程序无法解决吧,领导是不听这话的。

经过一番努力,还是有了解决方案。

我发现,手动调用一下任何一个(通常是第一个)文本框的focus()方法就可以让所有的文本框恢复神智了。于是写了一个公共脚本,在Iframe内的页面末尾,获取第一个文本框并调用其focus(),经测百来次,再没碰见无法获取焦点的情况,问题解决。

下面是网友回复:
弹出的那个标签是<a />标签吧?
换成<span />标签似乎就OK了

Javascript 相关文章推荐
网络图片延迟加载实现代码 超越jquery控件
Mar 27 Javascript
jQuery.query.js 取参数的两点问题分析
Aug 06 Javascript
Extjs中通过Tree加载右侧TabPanel具体实现
May 05 Javascript
Angular.js中用ng-repeat-start实现自定义显示
Oct 18 Javascript
从零开始学习Node.js系列教程之SQLite3和MongoDB用法分析
Apr 13 Javascript
Bootstrap布局之栅格系统学习笔记
May 04 Javascript
原生JS实现的雪花飘落动画效果
May 03 Javascript
vue简单练习 桌面时钟的实现代码实例
Sep 19 Javascript
浅谈TypeScript 用 Webpack/ts-node 运行的配置记录
Oct 11 Javascript
React 实现车牌键盘的示例代码
Dec 20 Javascript
json_decode 索引为数字时自动排序问题解决方法
Mar 28 Javascript
Vue实现简单的留言板
Oct 23 Javascript
JavaScript 拾漏补遗
Dec 27 #Javascript
js 实现无干扰阴影效果 简单好用(附文件下载)
Dec 27 #Javascript
向大师们学习Javascript(视频与PPT)
Dec 27 #Javascript
javascript+css 网页每次加载不同样式的实现方法
Dec 27 #Javascript
用Jquery实现可编辑表格并用AJAX提交到服务器修改数据
Dec 27 #Javascript
jQuery中的常用事件总结
Dec 27 #Javascript
jQuery 动态酷效果实现总结
Dec 27 #Javascript
You might like
两级联动select刷新后其值保持不变的实现方法
2014/01/27 PHP
支持中文和其他编码的php截取字符串函数分享(截取中文字符串)
2014/03/13 PHP
分享php代码将360浏览器导出的favdb的sqlite数据库文件转换为html
2015/12/09 PHP
php代码调试利器firephp安装与使用方法分析
2018/08/21 PHP
YII框架关联查询操作示例
2019/04/29 PHP
BOOM vs RR BO3 第二场2.13
2021/03/10 DOTA
经过绑定元素时会多次触发mouseover和mouseout事件
2014/02/28 Javascript
JavaScript继承基础讲解(原型链、借用构造函数、混合模式、原型式继承、寄生式继承、寄生组合式继承)
2014/08/16 Javascript
JavaScript组件焦点与页内锚点间传值的方法
2015/02/02 Javascript
Jquery对新插入的节点 绑定Click事件失效的解决方法
2016/06/02 Javascript
使用jquery实现的循环连续可停顿滚动实例
2016/11/23 Javascript
Nodejs--post的公式详解
2017/04/29 NodeJs
JavaScript正则表达式简单实用实例
2017/06/23 Javascript
使用json-server简单完成CRUD模拟后台数据的方法
2018/07/12 Javascript
Vue加载组件、动态加载组件的几种方式
2018/08/31 Javascript
Vue侦测相关api的实现方法
2019/05/22 Javascript
Vuex新手的理解与使用详解
2019/05/31 Javascript
基于js判断浏览器是否支持webGL
2020/04/18 Javascript
VSCode Vue开发推荐插件和VSCode快捷键(小结)
2020/08/08 Javascript
基于p5.js 2D图像接口的扩展(交互实现)
2020/11/30 Javascript
Python脚本实现网卡流量监控
2015/02/14 Python
python正则分析nginx的访问日志
2017/01/17 Python
python3 shelve模块的详解
2017/07/08 Python
深入理解Python中的*重复运算符
2017/10/28 Python
Python3内置模块之base64编解码方法详解
2019/07/13 Python
tensorflow实现测试时读取任意指定的check point的网络参数
2020/01/21 Python
Python requests模块cookie实例解析
2020/04/14 Python
Java ExcutorService优雅关闭方式解析
2020/05/30 Python
关于python scrapy中添加cookie踩坑记录
2020/11/17 Python
selenium框架中driver.close()和driver.quit()关闭浏览器
2020/12/08 Python
CSS3实现曲线阴影和翘边阴影
2016/05/03 HTML / CSS
红色康乃馨酒店:Red Carnation Hotels
2017/06/22 全球购物
医学专业本科毕业生自我鉴定
2013/12/28 职场文书
宪法宣传周工作方案
2014/05/26 职场文书
领导干部民主生活会自我剖析材料范文
2014/09/20 职场文书
MySQL子查询中order by不生效问题的解决方法
2021/08/02 MySQL