IE6 弹出Iframe层中的文本框“经常”无法获得输入焦点
公司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了
- IE6 弹出Iframe层中的文本框“经常”无法获得输入焦点
- IE6间歇性精神障碍:弹出Iframe层中的文本框“经常”无法获得输入焦点
- IE浏览器 下面的文本框,获得焦点后无法输入内容
- EditText无法输入内容,无法获得焦点,无法自动弹出键盘
- IE6-IE9兼容性问题列表及解决办法_补充之五:在IE9下, disabled的文本框内容被选中后,其他控件无法获得焦点问题
- 文本框获得焦点,并且同时清空文本框内原有的文字。 如果文本框内已经有用户输入的内容了,那么就不应该进行清除文本款内容这个动作
- arx 中对话框无法获得输入焦点的问题
- JQuery下focus()无法自动获取焦点的处理方法 jquery如何使文本框获得焦点
- JQuery下focus()无法自动获取焦点的处理方法 jquery如何使文本框获得焦点
- jquery弹出层里的文本框无法输入内容
- 在IE9下,disabled的文本框内容被选中后,其他控件无法获得焦点问题
- JQuery下focus()无法自动获取焦点的处理方法 jquery如何使文本框获得焦点
- JQuery下focus()无法自动获取焦点的处理方法 jquery如何使文本框获得焦点
- 关于datagridview单元格不切换焦点无法获得新输入数据的问题解决方法
- Extjs 弹出窗口文本框获得焦点
- 文本框内默认提示————请输入用户姓名(字体灰色),要求: (1)当文本框获得焦点时,默认提示消失 (2)当文本框失去焦点时,如果没有输入新内容,那么则显示原来的灰色字体内容; 如果有新内容输入则判断,如果长度小于10,则提示“姓名长度应该大于10个字符”
- 解决Android EditText获得焦点之后无法弹出软键盘输入法
- 文本框获得焦点后文本框内的提示文本消失 失去焦点后如果没有输入再显示提示 转
- 通过自定义控件实现文本框获得输入焦点时的状态
- EditText不自动获得输入焦点(以及 获得焦点但不弹出输入法软键盘的方法)