【问题标题】:Chrome for iOS (iPad/iPhone) does not fire focus event for inputs适用于 iOS (iPad/iPhone) 的 Chrome 不会触发输入的焦点事件
【发布时间】:2014-01-20 13:11:07
【问题描述】:

如果在 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(单击输入并查看警报)

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

【问题讨论】:

  • 任何人都可以至少在他的 iPad/iPhone 上使用 Chrome 尝试 jsfiddle 是否有效?我的 iPad(实际上是我老板的 iPad)出了点问题,因为有时当我单击输入时,我得到“在 Facebook 上分享”页面而不是 onfocus :(

标签: javascript google-chrome focus


【解决方案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,则为该字段应用一个“点击”事件以执行相同的操作...这仅在您拥有的唯一焦点来自用户点击时才有用,因为调用 .focus() 不会触发它......但在这种情况下,您可以在 .focus() 之后调用通过点击事件归因的函数。这似乎有点骇人听闻,所以我决定测试 vanilla js .onfocus 事件并证明它也没有触发。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多