在输入元素上避免300ms单击延迟,触发键盘出现在IOS上

时间:2015-03-26 07:18:12

标签: javascript ios jquery-mobile backbone.js

目前,我正在为Android和IOS开发Web应用程序(Backbone.js上的jQueryMobile)。 对于性能,我试图在这些设备上删除300毫秒的点击延迟。

对于那些不知道300ms延迟是什么的人来说,这是一篇非常好的文章解释它。

http://updates.html5rocks.com/2013/12/300ms-tap-delay-gone-away

对于Android设备,它很容易被删除。

<meta name="viewport" content="width=device-width, user-scalable=no">

上面的元代码做了trick.once chrome识别用户放大/缩小在页面中不可用,300ms延迟将消失。

但是IOS safari的情况,没有支持禁用它。

所以我已经尝试了一些插件来创建&#34;没有延迟点击事件&#34;基于touchstart - touchend事件和触及的位置。 我选择了&#39; vclick&#39;事件是jQueryMobile的原始事件,没有延迟点击。

除了一个事件处理程序更改DOM元素的情况之外它完美地运行,并且在我点击的某个时刻出现了input,OS键盘也出现了。

这是因为键盘显示基于&#34;正常&#34;点击事件,在没有延迟点击事件后延迟300ms。并且因为我在没有延迟点击事件时移动元素,在时间&#34;正常&#34;点击事件发生时,原始点击的元素不在input个元素。

我的问题是如何在键盘显示事件中删除300ms延迟?

简单可重复的代码在这里

http://jsfiddle.net/Suish/gypbn304/1/

任何建议或帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

https://github.com/ftlabs/fastclick

fastclick.js

window.addEventListener('load', function() {
    var fastClick = new FastClick(document.body);
}, false);