在 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 toWKWebView
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 在移动 Safari 中打开链接