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")によってロードされた場合にのみ機能しません。
どのブラウザを使用していますか? chrome&IE。Firefoxでチェックします。コードは完全に実行され、テキストエリアに焦点を当てています。
同じディレクトリに2つのファイル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を実行してボタンをクリックすると、text2にフォーカスしたtest2.htmlが表示されます。
イベントに関係なくsetTimeoutを使用することもできます。
setTimeout(function() {
document.getElementById("elementId").focus();
}, 0);