此问题引用了此处发布的解决方案。 https://stackoverflow.com/a/2600261/5086633
我在IE中遇到了类似的问题,但即使添加了很多延迟200
,这在我的应用程序中仍无法正常工作。输入框只是间歇性地聚焦,即使在IE中呈现页面之后,它也会跳过以关注输入字段。我还尝试按照下面的说明从setTimeout
和$(document).ready(function(){
调用$(window).load(function() {
函数,但没有成功。
当我在本地测试它并作为普通的html文件而不是在我的应用程序中时,此代码可以正常工作。
任何人都可以帮我修复/或提供IE中调试/此问题的线索,以便每次在IE中呈现页面时输入字段都会获得焦点吗?
脚注: - 它在Firefox中正常工作(没有延迟),在Chrome中focus
需要很小的延迟才能工作。
$(document).ready(function(){
setTimeout(function() { document.getElementById('testfocus').focus(); }, 200);
});
$(window).load(function() {
// executes when complete page is fully loaded, including all frames, objects and images
setTimeout(function() { document.getElementById('testfocus').focus(); }, 200);
});
setTimeout(function() { document.getElementById('testfocus').focus(); }, 200);

<html>
<head>
</head>
<body>
<input id="testfocus"/>
</body>
</html>
&#13;
答案 0 :(得分:1)
很奇怪。它对我有用......这不是一个很好的答案(win7,IE11,jquery 2.2.4)。您使用的是哪种特定的IE / OS / Jquery版本?
上面代码下方的“运行代码段”按钮是否有效?
这个jsfiddle怎么样:https://jsfiddle.net/u68gmzyc/?
$(document).ready(function(){
document.getElementById('testfocus').focus();
});
另外......你可以检查控制台是否有任何javascript错误消息?也许其他东西都失败了,副作用是你的代码实际上没有运行?
答案 1 :(得分:1)
https://stackoverflow.com/a/2600261/5086633适用于IE7。
每次在所有浏览器上都有效。
<body onload="document.getElementById('testfocus').focus();">
您可以看到favicon是否显示旋转圆圈(加载),因为只有在加载完成时才会发生焦点。
我尝试了以下适用于所有浏览器的内容:
<html>
<head></head>
<body onload="document.getElementById('testfocus').focus();">
<iframe src="http://www.healthcarereformdigest.com/wp-content/uploads/2014/07/forms.jpg"></iframe>
<input id="testfocus"/>
</body>
</html>
(添加了iFrame和那个图像,因为它很重,需要加载才能加载)。
如果您的应用程序失败,您可以按Tab键查看哪个元素具有焦点,然后检查它,因为它可能有多个focus()语句。
答案 2 :(得分:1)
此外,如果目标只是将特定元素集中在页面加载上,则可以向其添加自动聚焦属性。然后它会自动聚焦而不需要JS。
<input type="text" autofocus="autofocus" id="testfocus" />
答案 3 :(得分:0)
修复了这个问题,我自己玩了这个焦点延迟功能,增加了它,并发现输入按钮在呈现页面时获得焦点setTimeout(function() { document.getElementById('testfocus').focus(); }, 200);
但是,我不知道这个延迟的真正原因在IE和Chrome浏览器中是必需的。