无法在 iOS 9 上使用 fastclick 输入文本区域
Posted
技术标签:
【中文标题】无法在 iOS 9 上使用 fastclick 输入文本区域【英文标题】:Cannot type into textarea with fastclick on iOS 9 【发布时间】:2016-01-28 11:29:15 【问题描述】:过去几天我一直在寻找解决方案,但所有应该工作的东西(根据文档)都没有。
我正在使用fastclick 来消除打算在 iPad 上运行的 html5 应用程序的 300 毫秒延迟。一切都很好,除了我失去了在 textarea 中输入文本的能力。简单的单行字段有效,但多行文本区域无效。
当我点击文本区域时,键盘会弹出,我可以开始输入。输入的第一个字母出现在文本区域 - 仅此而已。随后的字母没有。如果我关闭键盘并再次点击文本区域,我可以再输入一个字母。
我已经尝试了所有建议,包括 needsclick
、needsfocus
等。我尝试编辑 fastclick.js 以扩展处理 input
元素的特殊代码以也覆盖 textarea
- 没有。
我可能因为它而不得不转储 fastclick 并自己手动完成所有事情,因为我已经在这个问题上失去了将近一周的时间。然而,在我走那条路之前,也许有人可以为我指明正确的方向。
请注意,该问题出现在装有 ios 9.2(特别是 9.2.1 - 最新版本)的 iPad 和 iPhone 上。
【问题讨论】:
【参考方案1】:好的,原因很简单 - 与 fastclick 无关。是 this answer 真正为我解决了这个问题。
在我的 CSS 中,我有以下内容:
body *
-webkit-touch-callout: none;
-webkit-user-select: none;
user-select: none;
body input
-webkit-touch-callout: text;
-webkit-user-select: text;
user-select: text;
这样做是为了对付愚蠢的用户,他们会在按钮上“touchstart”然后开始思考他们想要什么 - 在“touchend”之前,ios 会进入复制/粘贴模式。
然后在输入中明确禁用它以允许在文本中复制/粘贴。然而,我忘了在第二部分中包含 textarea 。现在第二块看起来像这样:
body input, body textarea
-webkit-touch-callout: text;
-webkit-user-select: text;
user-select: text;
一切都按预期进行。
【讨论】:
【参考方案2】:jQuery 修复,
$('input.form-control,textarea').on('click',function()
$(this).focus();
);
这在我的情况下有效。
【讨论】:
这对我有用,因为父元素有一个 mousedown 事件阻止光标进入文本区域。因此,不必删除 mousedown,添加它可以让我保留这两个功能。以上是关于无法在 iOS 9 上使用 fastclick 输入文本区域的主要内容,如果未能解决你的问题,请参考以下文章
Famo.us “Fastclick” 在移动设备上点击两次
在项目中全局添加FastClick导致图片上传插件在ios端失效的解决方案