最近几天,我一直在寻找解决方案,但是所有可行的方法(根据文档)都不起作用.
我正在使用fastclick消除旨在在iPad上运行的HTML5应用程序的300ms延迟.一切都很好,除了我失去了将文本键入文本区域的功能.简单的单行字段有效,但多行文本区域无效.
当我点击文本区域时,键盘弹出,我可以开始键入了.输入的第一个字母出现在文本区域中-仅此而已.随后的字母不.如果关闭键盘并再次点击文本区域,则可以输入另一个字母.
我已经尝试了所有建议的内容,包括needsclick,needsfocus等.我尝试编辑fastclick.js来扩展用于处理输入元素的特殊代码,使其也覆盖textarea-什么都没有.
我可能正因为这个原因而不得不放弃fastclick并自己手动执行所有操作,因为我已经在这个问题上损失了将近一周的时间.然而,在我走之前,也许有人可以指出我正确的方向.
请注意,该问题存在于装有iOS 9.2(特别是最新版本9.2.1)的iPad和iPhone上.
解决方法:
好的,原因很简单-与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将进入复制/粘贴模式.
然后在输入中将其明确禁用,以允许在文本中进行复制/粘贴.但是,我忘了在第二部分中包含文本区域.现在,第二部分如下所示:
body input, body textarea {
-webkit-touch-callout: text;
-webkit-user-select: text;
user-select: text;
}
一切都按预期进行.