ios CordovaJavaScript焦点事件永远不会到来

ios Cordova javascript focus event never comes

本文关键字:永远 CordovaJavaScript 焦点 事件 ios      更新时间:2023-09-26

使用 GWT 2.5.1 和 Cordova 2.9.0.0 开发 iOS 应用程序。

遇到了一个相当大的问题:点击任何文本框时,虚拟键盘出现,但没有触发javascript焦点事件(或除窗口调整大小以外的任何其他事件)。

所以我无法确定点击了哪个文本框。此外,我什至不知道为什么窗口大小发生了变化 - 因为屏幕方向变化或键盘外观。

document.activeElement 指向 BODY 元素。

第二次点击(当键盘可见时)会在焦点事件上触发。

在iPhone模拟器5.0和6.0上试用

所以问题是如何在第一次点击时获得活动文本框或检查虚拟键盘是否可见(无需编写 phonegap 插件)?

更新:仅当 config.xml 具有键盘收缩视图=true 时,才会发生此问题

一般来说,据我了解,这个问题是由于 iOS webview 中焦点事件处理的特殊性(与幽灵点击事件有关的东西。 没有时间深入挖掘)。

解决方案是使用 jQuery 捕获"触摸"事件,并将焦点设置为手动点击的输入。我不确定为什么我们需要jquery,但这是我设法捕获"触摸"事件的唯一方法

代码(使用GWT jQuery端口gwtquery):

$("input").live(Event.ONTOUCHEND, new Function() {
@Override
public boolean f(final Event e) {
    $(e).focus();
    return false;
   }
}); 

到目前为止,它或多或少运行良好。