2

我遇到了一个非常有趣的问题。我正在尝试使用 Javascript(没有 jQuery,我也尝试过但没有成功)将焦点window.onLoad设置在输入字段上。

看看这个小提琴:setFocusOnLoad

它在 chrome 浏览器中运行良好,但在 Firefox 中运行良好。火狐有什么问题吗?我该如何解决。

编辑:
这是我在 html 文件中复制的代码:

<!DOCTYPE html>
<html>
    <head>
        <title></title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <script type="text/javascript">
            function onloadFocus(){
                var name = document.getElementById('name');
                //        name.value='window.onload called';
                name.focus();


            }

            window.onload=onloadFocus();
        </script>
    </head>
    <body>
        <div><input type='text' value='' id='name' name='name'></div>
    </body>
</html>
4

4 回答 4

6

尝试添加一点延迟:

function onloadFocus(){
    setTimeout(function() {
        document.getElementById('name').focus()
    }, 10);
}

更新 jsFiddle

于 2012-09-22T10:26:18.533 回答
0

必须将函数调用包装成一个函数,否则会立即调用,而不是onLoad(此时输入仍未知):

window.onload=function(){onloadFocus();}
于 2012-09-22T10:54:21.313 回答
0

您应该使用window.onload=onloadFocus;,而不是window.onload=onloadFocus();因为window.onload=onloadFocus();onloadFocus 将立即运行,此时输入字段可能不可用。

jsfiddle

于 2012-09-22T11:16:38.023 回答
0

我得到了解决方案。如果你想专注于 Firefox。在脚本标签的开头写下焦点函数。

<script type="text/javascript">
    document.getElementById('name').focus();
    // rest of the code here.
</script>

希望这会帮助你。

于 2018-07-27T12:18:51.167 回答