iframe中的输入触发了iOS键盘无法关闭

时间:2019-07-02 10:14:30

标签: javascript html ios safari webkit

我的网页上有一个模式窗口,其中包含一个<iframe>,页面存储在远程服务器上。该页面包括带有一些<input>元素的表单。当用户在模式上点击关闭按钮时,带有iframe的模式就会隐藏起来。

问题: 如果用户开始在<input>中的<iframe>中键入内容,然后关闭模式模式,则键盘只有在按下Done按钮后才会关闭。

我已经简化了此示例,并删除了模式实体,并提供了两个按钮:一个隐藏模式,另一个将其从DOM中删除。

我尝试将window.activeElement的焦点明确设置为根页面上的不同元素。(您可以在演示中进行检查),尝试在{{1}上调用.blur()方法}或iframe。 在我的应用中iframe.contentWindow隐藏了,但是我试图将其从页面中删除。

当前行为

  • 用户开始在<iframe>的{​​{1}}中键入内容
  • iOS键盘打开
  • 删除/隐藏iframe
  • 即使<input>不存在或隐藏,iOS键盘仍会打开。

Issue screenshot

我认为,如果不再显示触发它的元素,就应该隐藏键盘,就像在Android / Chrome上一样。

在这种情况下,我有几个问题:

  • 我可以在我的应用中以某种方式解决此问题吗?
  • 如果是iOS或WebKit中的错误,Apple或社区是否提供了一些Bug跟踪程序来解决此类问题?

1 个答案:

答案 0 :(得分:0)

使用响应者链:UIApplication.sharedApplication()。sendAction(“ resignFirstResponder”,to:nil,from:nil,forEvent:nil)

使用UIView的endEditing: self.view.endEditing(true)