美文网首页
2018-04-04 移动端自动聚焦focus问题

2018-04-04 移动端自动聚焦focus问题

作者: Vcanary | 来源:发表于2018-04-04 22:18 被阅读397次

场景

前几天做一个移动端的功能,点击某个按钮后自动呼出一个弹层,弹层上有一个输入框,要求输入框自动获取焦点。

问题

于是使用下面的一溜逻辑:
1.点击按钮后显示弹层及输入框
2.ele.focus()

问题

ios上的问题

首先pc端模拟及adroid没啥问题。但是ios下无效。
原因在于ios有所限制:
寻常代码里的focus不会生效,除了在某个UI事件(例如click, touchend等)的直接执行环境中调用focus

注意这个直接环境,它的意思是如果你在setTimeout, promise等异步方式中执行了focus,依然是无效的。

和fastclick结合里产生的问题

原本在input的click,touchend中直接调用一个focus事件,经过fastclick的处理会变成:将原事件截取,抛弃,基于原事件创建一个新事件放在setTimeout中执行。

这样focus还是无法执行。

解决办法

禁止使用fastclick,使用touchend代替原来的click事件。

相关文章

网友评论

      本文标题:2018-04-04 移动端自动聚焦focus问题

      本文链接:https://www.haomeiwen.com/subject/ljmkhftx.html