在 WKWebView 中调用 <input type="text"> 上的 .focus() 会导致键盘延迟

Posted

技术标签:

【中文标题】在 WKWebView 中调用 <input type="text"> 上的 .focus() 会导致键盘延迟【英文标题】:calling .focus() on <input type="text"> in WKWebView causes keyboard lag 【发布时间】:2015-08-11 14:46:47 【问题描述】:

我正在使用 WKWebView 在 html5 和 javascript 中构建应用程序。

我有一个非常纯文本 input 我想通过 javascript 手动调用 focus() 。它确实有效,键盘弹出并且输入中有一个光标但是ios键盘在输入/删除第一个字符时非常滞后。角色出现和键盘再次变为交互需要一秒钟多的时间。

有人知道问题可能是什么吗?


【问题讨论】:

可能有a bug related to WKWebView and element.focus() 干扰 【参考方案1】:

尝试使用 click() 而不是 focus()。只要您没有在文本框的 onclick 上附加任何事件,两者都会给您相同的响应。

【讨论】:

不幸的是,使用 click() 并没有改善这种情况! 你可以在关注该字段后尝试给一个默认值吗? 如果它对任何人有帮助:我有一个错误,在输入焦点丢失后语音输入会再次填充文本并通过调用 .focus() -> 再次使用 JS 手动重置.click() 反而修复了这个错误【参考方案2】:

我们在 WKWebview 的 AngularJS 应用程序中遇到了类似的问题,我们通过使用 ng-click 事件而不是 ng-focus 解决了它(仅在 iOS 上)。

【讨论】:

以上是关于在 WKWebView 中调用 <input type="text"> 上的 .focus() 会导致键盘延迟的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 iOS WKWebView 注入 JavaScript 回调来检测 onclick 事件?

WKWebView:页面加载后调用javascript

从 WKWebView 调用时,无法使用 JavaScript 在移动 Safari 中打开链接

WKWebView 可以调用主应用程序中的函数并返回值吗?

添加 WKWebView 后 IONIC 中的 CORS API 调用问题

WKwebview,js调用用Swift函数播放声音