【问题标题】:How to capture the hide keyboard event on iOS using JavaScript如何使用 JavaScript 在 iOS 上捕获隐藏键盘事件
【发布时间】:2012-04-06 20:02:12
【问题描述】:

当在 iPad 虚拟键盘上按下隐藏键盘按钮时,我需要调整网页内容的大小。隐藏键盘时会启动哪个 JavaScript 事件?

【问题讨论】:

标签: javascript ios ipad


【解决方案1】:

您可以使用 focusout 事件。这就像模糊,但气泡。它会在键盘关闭时触发(当然,在其他情况下也会触发)。在 Safari 和 Chrome 中,只能使用 addEventListener 注册事件,而不能使用传统方法。这是我用来在键盘关闭后恢复 Phonegap 应用程序的示例。

 document.addEventListener('focusout', function(e) {window.scrollTo(0, 0)});

如果没有这个 sn-p,应用容器会一直停留在向上滚动的位置,直到页面刷新。

【讨论】:

  • 哈,这就是我“在键盘关闭后恢复 Phonegap 应用程序”的确切场景
  • 这个 EventListener 帮助我解决了 ExtJS 5 的问题;在 Safari 中隐藏 IOS 键盘后,ExtJS 页面内容将保持向下滚动一段时间。这是一个问题,因为在 ExtJS 5.0.1 中,滚动在触摸界面上被禁用。因此,我使用此事件触发 ExtJS 视图容器上的 doLayout(),使容器再次适合屏幕边界。
  • 如果只有一个输入字段,这很有效,但如果有多个,则不行。如果用户点击/关注不同的输入字段,窗口将滚动到顶部,让用户想知道他们点击的输入字段发生了什么。
  • @kenecaswell:您可以使 scrollTo 位置动态化。它不必总是滚动到 0。
【解决方案2】:

【讨论】:

  • 谢谢,我想我会听 onblur 事件。因为当虚拟键盘关闭时,输入会失去焦点。
  • @Marius 在按下键盘隐藏按钮时焦点不会丢失。
【解决方案3】:
    window.onblur = function(e) {
      window.scrollTo(0, 1);
    };

这是我的解决方案,如果有人按下 iOS 14.7 的“关闭键盘”,效果很好。

【讨论】:

    猜你喜欢
    • 2013-03-21
    • 2012-06-09
    • 2023-04-05
    • 1970-01-01
    • 1970-01-01
    • 2013-06-16
    • 2012-01-10
    • 2013-09-17
    • 1970-01-01
    相关资源
    最近更新 更多