绑定到触摸启动事件,导致自动对焦集中在Mobile Safari中的任何单击上

Binding to a touchstart event causing autofocus to focus on any click in Mobile Safari

本文关键字:Safari Mobile 集中 单击 任何 事件 启动 触摸 绑定      更新时间:2023-09-26

理论上,移动Safari完全不支持自动对焦(http://caniuse.com/#feat=autofocus)。然而,我们看到了这种非常奇怪的行为,当touchstart事件绑定到document时(无论功能是否有任何行为),当点击页面上的任何地方时,autofocus的第一个输入就会集中,屏幕键盘就会显示出来。

这可以在iOS模拟器中使用iOS 8进行复制。以下是再现问题的最小html和javascript:

<html>
<head>
<script>
document.addEventListener("touchstart", function() {});
</script>
</head>
<body>
<input type="text">
<input type="text" autofocus="autofocus">
</body>
</html>

这里有一个jsfiddle:http://jsfiddle.net/qd858nob/

只需点击输入之外的任何位置,第二个输入就会自动对焦。理想情况下,我很想找到一个全局解决方案来解决这个问题,而不必从我们所有的输入元素中删除自动对焦。

请参阅iOS8中使用.focus()将显示虚拟键盘并在触摸后滚动页面,以便对此问题进行更广泛的讨论。它看起来像是iOS 8的"bug"。我已经向苹果公司提交了一份报告——你们能做的最好的事情也是如此,希望它能在他们的名单上很快得到解决。