在Javascript设置中,如果调用为子窗口,则使用focus()的textarea不起作用

时间:2013-10-12 16:56:07

标签: javascript setfocus

我有一个简单的测试页面,它将焦点设置为oninit函数上的textarea。但是,如果将页面作为子项调用,则确切的代码无法执行此操作。

放置警告框证明正在调用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”)加载页面时才起作用;

2 个答案:

答案 0 :(得分:5)

你使用哪种浏览器? 我检查了firefox,chrome&amp; IE浏览器。 您的代码运行完美,专注于textarea。

我在同一目录中创建了两个文件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上。

答案 1 :(得分:5)

您也可以使用setTimeout而不管事件。

setTimeout(function() {
    document.getElementById("elementId").focus();
}, 0);