目前我正在为 Android 和 IOS 开发网络应用程序(jQueryMobile on Backbone.js)。 为了提高性能,我试图消除这些设备上 300 毫秒的点击延迟。
对于那些不知道 300 毫秒延迟是什么的人,这里有一篇非常好的解释它的文章。
http://updates.html5rocks.com/2013/12/300ms-tap-delay-gone-away
对于 Android 设备,删除它真的很容易。
<meta name="viewport" content="width=device-width, user-scalable=no">
上面的元代码起到了作用。一旦 chrome 识别出用户在页面中放大/缩小不可用,300 毫秒的延迟就会消失。
但是IOS safari的情况下,不支持禁用。
所以我已经尝试了一些基于 touchstart
- touchend
事件和触摸位置创建“无延迟点击事件”的插件。
我选择了 'vclick' 事件,它是 jQueryMobile 的无延迟点击原始事件。
除了事件处理程序更改 DOM 元素并且不知何故 input
在我单击的位置出现,OS 键盘也出现的情况下,它工作得很好。
那是因为键盘出现是基于“正常”点击事件,在没有延迟点击事件后有 300 毫秒的延迟。并且由于我在没有延迟点击事件时移动元素,在“正常”点击事件发生时,原始点击元素不存在,只有 input
元素。
我的问题是如何消除键盘出现事件的 300 毫秒延迟?
这里是简单的可重现代码
http://jsfiddle.net/Suish/gypbn304/1/
任何建议或帮助将不胜感激。
最佳答案
https://github.com/ftlabs/fastclick
fastclick.js
window.addEventListener('load', function() {
var fastClick = new FastClick(document.body);
}, false);
关于javascript - 避免 300 毫秒的输入元素点击延迟触发键盘出现在 IOS 上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29272901/