我在chrome的移动端遇到了一些奇怪的功能。
当我尝试聚焦在一个元素上时,仅仅加载输入,用getItById并执行.focus()是无效的。然而,如果你将其包装在附加到按钮的事件监听器中,并用鼠标点击按钮,它就可以正常工作。
于是,我尝试欺骗它,看看是否可以调用btn.click(),但这不会触发.focus()
请在下面尝试:在移动设备上使用chrome(至少在iOS上),加载页面。你应该会收到警报“Clicked”,但它不会聚焦在输入框上。然后,尝试点击按钮。您将获得警报和正常工作的焦点。
我发现这很有趣,并想知道人们是否知道解决方法。
链接在这里-jsfiddle
const btn = document.getElementById('button')
btn.addEventListener('click', () => {
alert('clicked')
const input = document.getElementById('input')
input.focus()
})
btn.click()
<input id="input" type="text">
<button id="button">Button</button>
编辑
我还注意到的另一件事情是,如果你让手机进入睡眠状态,然后再次打开它,focus()函数可以在没有点击的情况下正常工作。
编辑2 - 为移动端添加了链接