如果在Android和iOS上打开软件键盘,我会进行简单的检测:
$(document).on({
focus: function() { keyboardOpened = true; },
blur: function() { keyboardOpened = false; }
}, 'input'); //catch all focus and blur events fired on any input element
它用于在用户编写邮件时阻止某些操作(例如,忽略调整大小事件)。
适用于所有浏览器,但iOS上的Chrome除外。我在网站上包含了Firebug Lite,但没有错误,只是事件永远不会被触发,打开SW键盘时网络无法正常工作。
这是一个小提琴:http://jsfiddle.net/WYULR(点击输入并查看提醒)
有人知道这个的原因或解决方法吗?
答案 0 :(得分:1)
我也得到了这个:(我的解决方案是检测ipad + chrome是否使用:
var isCriOS = /CriOS/.test(navigator.userAgent);
我尝试了https://github.com/gabceb/jquery-browser-plugin + webkit类型区分代码How to detect chrome and safari browser (webkit),但我无法解决这个问题。
如果是ipad + chrome,请为该字段应用'click'事件来执行相同的操作...只有当您将拥有的唯一焦点来自用户点击时才会这样做,因为调用.focus()不会触发它...但在这种情况下,您可以在.focus()之后调用通过click事件归属的函数。这似乎有点hackish所以我决定测试vanilla js .onfocus事件并证明它也没有发射。