Chrome for iOS(iPad / iPhone)不会为输入触发焦点事件

时间:2014-01-20 13:11:08

标签: javascript google-chrome focus

如果在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(点击输入并查看提醒)

有人知道这个的原因或解决方法吗?

1 个答案:

答案 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事件并证明它也没有发射。