IE Focus() 问题
在某些浏览器中,例如 IE7,输入元素上的 focus() 方法可能无法按预期工作。这可能会导致光标无法定位在输入字段内。
IE 解决方案
要解决 IE 中的此问题,可以使用 setTimeout 函数来延迟焦点操作。这会强制 IE 确认更改并正确定位光标。下面是一个示例:
setTimeout(function() { document.getElementById('myInput').focus(); }, 10);
替代解决方案
如果 setTimeout 解决方案在 Opera 中不起作用,则可以采取另一种方法。通过 ID 选择元素,使用 cloneNode() 方法,并将其替换为克隆的元素,即可设置焦点。
缓慢加载页面的扩展解决方案
如果由于页面加载缓慢或渲染延迟而导致输入元素不可用,则需要更强大的解决方案。以下代码片段在短暂的间隔后重试焦点操作,直到元素变得可用:
setTimeout( function( ) { var el = document.getElementById( "myInput" ) ; ( el != null ) ? el.focus( ) : setTimeout( arguments.callee , 10 ) ; } , 10 ) ;
此方法继续尝试设置焦点,直到元素出现在 DOM 中。
以上是如何解决IE7等浏览器中的focus()问题?的详细内容。更多信息请关注PHP中文网其他相关文章!