21

我有一个简单的测试页面,将焦点设置为 oninit 函数上的文本区域。但是,如果页面被称为子页面,则确切的代码无法执行此操作。

放置警告框证明 oninit 函数正在被调用,但未能将焦点放在文本框中。不过,按下重新加载确实可以正确聚焦。

因此,鉴于我的代码在主页上调用时可以完美运行,并且如果调用 reload 也可以在子页面上运行,那么为什么它第一次不起作用?

<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"); 加载时才不起作用。

4

2 回答 2

8

你使用哪个浏览器?我检查了 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 出现在 textarea 上。

于 2013-10-12T17:24:35.607 回答
8

无论事件如何,您也可以使用 setTimeout。

setTimeout(function() {
    document.getElementById("elementId").focus();
}, 0);
于 2015-11-13T03:23:36.637 回答