我有一个简单的测试页面,它将焦点设置到 oninit 函数上的文本区域。但是,如果该页面作为子页面调用,则确切的代码将无法执行此操作。
放入alert框证明oninit函数被调用但未能将焦点置于文本框中。按下重新加载后,焦点就会正确。
因此,鉴于我的代码在主页上调用时可以完美运行,并且如果调用重新加载,也可以在子页面中运行,那么为什么它第一次不起作用?
<html>
<body onload="init()">
<script type="text/javascript">
function init()
{
document.getElementById("message").focus();
}
</script>
<textarea id="message" rows=10 cols=40></textarea>
</body>
</html>
这里没有什么聪明的地方,只是如果页面是通过 window.open("test2.html"); 加载的,则不起作用
无论事件如何,您都可以使用 setTimeout。
setTimeout(function() {
document.getElementById("elementId").focus();
}, 0);
您使用哪种浏览器? 我检查了 Firefox、Chrome 和 IE。 您的代码运行完美并专注于文本区域。
我在同一目录中创建两个文件 test1.html 和 test2.html 。 在 test1.html 中我插入以下代码..
<html>
<body>
<script type="text/javascript">
function init()
{
window.open('test2.html');
}
</script>
<button onclick="init()">test</button>
</body>
</html>
在 test2.html 中..
<html>
<body onload="init()">
<script type="text/javascript">
function init()
{
document.getElementById("message").focus();
}
</script>
<textarea id="message" rows=10 cols=40></textarea>
</body>
</html>
然后,我运行 test1.html 并单击按钮,然后 test2.html 出现,焦点位于文本区域。