我有一个简单的测试页面,它将焦点设置为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”)加载页面时才起作用;
答案 0 :(得分:5)
我在同一目录中创建了两个文件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);