我有一个相当复杂的网络应用程序,我将其压缩为以下两个 HTML 页面,但问题仍然存在。问题?在 IE (8 & 9) 中,厚框模式的 (iframe) 输入字段在一秒(或更短)后失去焦点。它仅在处于模态时发生。如果您自己加载页面,焦点不会丢失。
我已经尝试了 jQuery 1.4.2 和 1.7.2,并且每个都出现了问题。我将其设置为 jsfiddle 但不认为它支持能够触发第二页。已经设置好了,所以你可以看到它在这里工作
基本页面:
<!DOCTYPE HTML>
<html>
<head>
<link href="http://jquery.com/demo/thickbox/thickbox-code/thickbox.css" media="screen" rel="stylesheet" type="text/css" >
</head>
<body>
<a id="createAccountLink" class="thickbox" href="test2.html?KeepThis=true&TB_iframe=true&height=400&width=600">Login</a>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script type="text/javascript" src="http://jquery.com/demo/thickbox/thickbox-code/thickbox.js"></script>
</body>
</html>
模态:
<html>
<head>
</head>
<body>
<input type="text" id="ContactFormName" name="firstName" class="text" value="" />
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script type="text/javascript">
$("#ContactFormName").focus();
</script>
</body>
</html>
如果我从头开始构建它,我不会使用thickbox。但是现在改变它并不是一个真正的选择,因为它在其他地方被大量使用。
回答 焦点必须延迟。即使是 1ms 也可以。
setTimeout (function () {
$("#ContactFormName").focus();
}, 1);