因为原理知识或实践经验缺乏的缘故,编码过程中,常常会遇到这种问题;这问题像座大山似的,横亘在你面前,让你苦思不得其解,必欲除之而后快;而一旦解决,无论是自己解决还是别人帮你解决的,那种轻松与愉悦也是常人难以体会的。
今天,就遇到了这样一个问题。
一个IE7(包括IE6)下焦点的无法set的问题(Firefox下没有问题),试了一下午,拼命的试拼命的试拼命的试,就是不成功。基本流程是这样:
1.有个单独的层(xDiv),实现一个对话框似的东西
2.通过ajax操作,返回不同的input(radio,select等),写在层上(用xDiv.innerHTML="<input type='text'..."实现)
3.给该层上的input框set focus,使用 setTimeout("document.getElementById('xxx_input').focus();", 50);
症状:
Firefox下完全没问题,Safari下完全没问题,IE7、IE6有的对话框返回有问题,有的没有问题。
查了一下,hax说(http://www.iteye.com/topic/94825):
引用
当时焦点本在你的input里,所以你append之后,首先会被remove,焦点就消失了。那么ie要把焦点重置到某个地方的,比如它的parentNode。而你直接调用focus方法是在重置之前,就可能不起作用了。
问题的关键是ie的焦点不仅有浏览器自身逻辑焦点,而是会被映射到windows控件焦点。两者的同步是存在一定问题的,因此ie经常会出现一些奇怪的丢焦点问题。例如你开启着输入法的时候点击一个vml图像,焦点就会消失,此时你可以输入一些汉字看看发生什么奇怪的事情,呵呵。
所以hexiaodong的方法就起作用了。推而广之,许多时候碰到奇怪问题,延时可以解决问题。
不过这并不是说dom操作不是即时生效。dom操作确实都是同步的。但是因dom改变而触发的事件,以及其他一些效应(例如样式应用),很可能是异步的。
他提到的延时可以解决问题,我这个延时也解决不了。但问题的根源总算有点眉目,就是IE采用windows控件自身焦点的问题。
分享到:
相关推荐
设有n座山,计算机与人为比赛的双方,轮流搬山。规定每次搬山的数止不能超 过k座,谁搬最后一座谁输。游戏开始时。计算机请人输入山的总数(n)和每次允许搬山的最大数止(k)。然后请人开始,等人输入了需要搬走的山的...
Flash动画实战精选-从前有座山详细制作教程
《只要翻过那座山》教学课件.ppt
设有n座山,计算机与人作为比赛的双方,双方轮流搬山。规定每次搬山的数目不能超过k座,谁搬最后一座谁输。游戏开始时,计算机请人输入山的总数(n)和每次允许搬山的最大数目(k)。然后请人先开始,人输入了需要搬走的...
计算机与人作为比赛的双方,双方轮流搬山。双方轮流搬山直到最后一座山搬完为止。
新人教部编版五年级上册语文 快乐读书吧:从前有座山 重点习题练习复习课件 .pptx
2--[从前有座山].zip源码scratch2.0 3.0编程项目源文件源码案例素材源代码2--[从前有座山].zip源码scratch2.0 3.0编程项目源文件源码案例素材源代码2--[从前有座山].zip源码scratch2.0 3.0编程项目源文件源码案例...
翻过童年那座山
然后请人开始,等人输入了需要搬走的山的数目后,计算机马上打印出它搬多少座山,并提示尚余多少座山。双方轮流搬山直到最后一座山搬完为止。计算机会显示谁是赢家,并问人是否要继续比赛。若人不想玩了,计算机便会...
设有n座山,计算机与人作为比赛的双方,双方轮流搬山。规定每次搬山的数目不能超过k座,谁搬最后一座谁输。游戏开始时,计算机请人输入山的总数(n)和每次允许搬山的最大数目(k)。
22只要翻过那座山.ppt
从前有座山(一)作文.doc
初中语文文摘历史拿破仑也跨不过那座山
初中语文文学讨论美文荐读翻过那座山
从前有座山-少儿编程scratch项目源代码文件案例素材.zip
scratch2源码从前有座山本资源系百度网盘分享地址
2021部编版语文五年级上册快乐读书吧:从前有座山.pptx
六年级下语文A只要翻过那座山湘教PPT学习教案.pptx
七年级语文上册《只要翻过那座山》同步练习 鄂教版.doc
2015春六年级语文下册《只要翻过那座山》课件5 湘教版