Javascript 在地址栏中启动焦点时Firefox焦点转换失败
当我试图在页面加载时将焦点设置为输入元素时,Firefox在某些情况下会失败。代码如下:Javascript 在地址栏中启动焦点时Firefox焦点转换失败,javascript,firefox,focus,onload,address-bar,Javascript,Firefox,Focus,Onload,Address Bar,当我试图在页面加载时将焦点设置为输入元素时,Firefox在某些情况下会失败。代码如下: :focus { outline: 3px solid #ff0000; } <script type="text/javascript"> function setFocus() { document.getElementById('input-id').focus(); document.getElementById('input-id').
:focus {
outline: 3px solid #ff0000;
}
<script type="text/javascript">
function setFocus() {
document.getElementById('input-id').focus();
document.getElementById('input-id').select();
console.log(document.activeElement);
}
</script>
<body onload="setFocus()">
<div><input id="input-id" type="text" value="Waiting for focus..." onfocus="console.log('Received focus!')" /></div>
</body>
请在此处尝试:。这个想法很简单,当页面加载时,输入元素获得焦点,文本被选中
在以下情况下,它在Firefox中工作:
将光标放在URL栏中,然后按Enter键;
将光标放在输入文本中,然后按Enter键,或按重新加载按钮,或在Windows和Linux上按Ctrl-R键,在Mac上按Cmd-R键。
但是在Firefox中,如果你把光标放在URL栏中,然后按重新加载按钮,或者在Windows和Linux上按Ctrl-R,在Mac上按Cmd-R,它就不起作用了。您可以从console.log中看到,DOM认为activeElement是输入,但这在两种意义上都不是真的:
CSS输入选择器未激活;
输入元素未收到焦点事件。
所以DOM现在处于混乱状态,这在我的应用程序中造成了严重的问题!只是因为用户单击URL栏并按重新加载,而不是不单击URL栏并按重新加载,或者单击URL栏并按Enter。真是一团糟
我所说的Firefox是指:
Linux和Mac上的FF15;
Windows和Linux上的FF10;
窗口上的FF9。
它在我尝试过的每一个Chrome和Safari版本上都运行良好
我唯一的解决方案是在.focus之前引入警报。不太满意!我应该在警报中添加什么?Firefox错误解决方法,请按OK
感激地接受任何更好的想法:用window.focus初始化;似乎将焦点推出地址栏。使用窗口初始化。焦点;似乎将焦点从地址栏中推出