当前位置: 首页 > 面试题库 >

iPad Web App:在Safari中使用JavaScript检测虚拟键盘?

丁光华
2023-03-14
问题内容

我正在为iPad编写一个Web应用程序( 不是常规的App Store应用程序
-它是使用HTML,CSS和JavaScript编写的)。由于键盘占据了屏幕的很大一部分,因此在显示键盘时更改应用程序的布局以适合剩余空间将是有意义的。但是,我发现没有办法检测何时或是否显示了键盘。

我的第一个想法是假设当文本字段具有焦点时键盘可见。但是,将外部键盘连接到iPad时,当文本字段获得焦点时,虚拟键盘不会显示。

在我的实验中,键盘也没有影响任何DOM元素的高度或滚动高度,而且我没有发现任何专有事件或属性来指示键盘是否可见。


问题答案:

我发现一个可行的解决方案,尽管它有点难看。它也不会在所有情况下都起作用,但是对我来说有效。由于我正在根据iPad的窗口大小调整用户界面的大小,因此用户通常无法滚动。换句话说,如果我设置窗口的scrollTop,它将保持为0。

另一方面,如果显示键盘,则突然滚动。因此,我可以设置scrollTop,立即测试其值,然后将其重置。使用jQuery的代码如下所示:

$(document).ready(function(){
    $('input').bind('focus',function() {
        $(window).scrollTop(10);
        var keyboard_shown = $(window).scrollTop() > 0;
        $(window).scrollTop(0);

        $('#test').append(keyboard_shown?'keyboard ':'nokeyboard ');
    });
});

通常,您希望它对用户不可见。不幸的是,至少在模拟器中运行时,iPad可见(尽管很快)会再次上下滚动。尽管如此,它至少在某些特定情况下仍然有效。

我已经在iPad上对此进行了测试,它似乎可以正常工作。



 类似资料:
  • Javascript VirtualKeyboard 是一个 JavaScript 的虚拟键盘,特别适合在浏览器中的可视化编辑器中使用。支持多种语言。

  • http://docs.oracle.com/javase/8/javafx/user-interface-tutorial/embedd.htm 有没有人在javafx应用程序中有过虚拟键盘的经验?我需要能够显示正常的键盘或数字键盘时,文本字段是聚焦的。

  • 问题内容: 我正在尝试使用win32api通过特定的按键来打破Python中的循环。怎么会这样呢? 在以下代码中, win32api.KeyPress(’H’) 的实际版本是什么? 修订: 我希望能够通过按 h 键来中断循环。 编辑: 我正在尝试制作一个反复报告鼠标位置的程序,并且需要一种退出该程序的机制。 请参阅修订的代码。 问题答案: 只是底层Windows低层库的接口。见功能: 确定在调用函

  • 问题内容: 如何禁用Android虚拟键盘中的某些键(例如数字/符号键)? 具体来说,当用户将焦点放在标准android EditText小部件上时,当虚拟键盘显示时,我希望用户不能输入双引号(“)字符。 问题答案: 如何禁用Android虚拟键盘中的某些键(例如数字/符号键)? 你不能,对不起。毕竟,输入法编辑器可能首先没有“键”。 具体来说,当用户将焦点放在标准android EditText

  • 问题内容: 我想在一个按钮中创建一个事件。 当我单击按钮时,我想打开Windows虚拟键盘。 您能帮我提供代码吗? 谢谢您的合作。 最好的祝福。 问题答案: 我认为这就是这么简单: