触摸start处理程序包裹在iframe中时会弄乱文本输入的焦点



我正在使用使用iframe嵌入已经移动友好的web应用程序的电话盖上应用程序。在WebApp中,有一个搜索函数,该函数焦点文本字段揭示虚拟键盘。到目前为止,一切都很好...

但是,我正在使用一个库,该库在文档(iframe中的一个)上注册touchstart侦听器。因此,如果虚拟键盘在文档中显示用户触摸时,键盘停止工作。

来自iPad(或Xcode中的iPad模拟器...我已经在7.0.3上进行了测试),然后遵循说明:https://s3.amazonaws.com/ypassets-andy/app-frame。html

有趣的是,如果您不将其包裹在iframe中,键盘就不会破裂。转到此处:https://s3.amazonaws.com/ypassets-andy/app.html并按照说明看到它不会破裂。

我一直在敲我的头,但不知道如何使这件事有效。作为参考,这些堆栈交换帖子似乎相关,但我无法与他们相关:

  • 防止在移动浏览器上滚动而不防止输入聚焦
  • 单击iPhone supressing输入焦点上的延迟
  • iFrame中的iPad输入

感谢您的想法!

安迪

这似乎是一个未固定的iOS错误。唯一的解决方法是将输入从iframe移动到主文档中。

更长的故事:

安迪(Andy)试图解决这个问题,但最终失败了(用于模态中的登录/settingsdialog)。从来没有发现它几乎杀死了我,但这也许是一个很好的禅意。这是我们消除/尝试的方法:

  • iframe不集中/专注于不同的文档
  • 在设置焦点之前完全模糊所有内容
  • setrange等而不是焦点
  • 触摸start堆栈中的手动和火灾事件
  • 检查事件是否多次发射
  • 查看CSS属性是否像用户选择或触摸touch-callout有任何差异

所有的最终假设是,它是某种程度上相关的webkit"滚动输入到视图"逻辑,它在iOS 7中获得了一些更新。

最新更新