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

在Javascript中,如果作为子窗口调用,则设置带有focus()的textarea将不起作用,javascript,setfocus,Javascript,Setfocus,我有一个简单的测试页面,它将焦点设置为oninit函数上的textarea。但是,如果该页作为子级调用,则确切的代码无法做到这一点 放入警报框证明正在调用oninit函数,但无法将焦点放入文本框。然后按“重新加载”按钮可正确对焦 既然我的代码在主页面上被调用时可以很好地工作,而且如果调用了reload,它也可以在子页面上工作,那么为什么第一次就不能工作呢 <html> <body onload="init()"> <script type="text/javascr

我有一个简单的测试页面,它将焦点设置为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>

函数init()
{
document.getElementById(“message”).focus();
}
这里没有什么聪明的地方,只是如果页面是由window.open(“test2.html”)加载的,那么它就不起作用

您使用哪种浏览器? 我登录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>

函数init()
{
open('test2.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>

函数init()
{
document.getElementById(“message”).focus();
}

然后,我运行test1.html并单击该按钮,test2.html将显示在文本区域上。

您也可以使用setTimeout,而不考虑事件

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

你说的“如果页面被称为孩子”是什么意思?@jfriend00我想他是想
window.open(“”)
我在chromebook上使用Google chrome。我现在通过将open调用更改为window.open('test2.html','','width=530px,height=230px'),重现了测试代码中的错误;根据你的改变,我也改变了窗口。打开。但是代码运行得很好,主要集中在文本区域。最终找到了如何在chromebook上打开80端口并连接我的Mac。测试页面与Mac上的Safari、Chrome和Firefox如出一辙。这看起来像是Arm版Chrome的一个bug——这就是为什么我感到困惑的原因,因为我认为它应该是有效的。我知道这看起来像是在吹毛求疵,但有些情况下jquery可能不可用。我知道,但最好给出一个替代答案,这样社区就可以从中受益,而不是重复问题并重新发布相同的答案。我想你最好了解一下社区指南。伊山·李亚纳格是对的@Bueno。他的回答帮助了我。