1
我使用Hummer.js來處理單擊和雙擊,兩個手勢都被識別爲延遲幾百毫秒。 這裏(fiddle)Hammer.js - 無延遲支持單擊和雙擊
var hammertime = new Hammer.Manager(containerElement);
hammertime.add(new Hammer.Tap({event: 'doubletap', taps: 2}));
hammertime.add(new Hammer.Tap({event: 'singletap'}));
hammertime.get('singletap').requireFailure('doubletap');
hammertime.on("doubletap", onDoubleTap);
hammertime.on("singletap", onSingleTap);
證明單抽頭延遲是不可避免的,因爲它必須等待,以確保這實際上不是一個雙擊。但是雙擊延遲沒有理由。 我可以刪除requireFailure設置並處理這種我自己在這裏演示的邏輯(fiddle)。
var hammertime = new Hammer.Manager(containerElement);
hammertime.add(new Hammer.Tap({event: 'doubletap', taps: 2}));
hammertime.add(new Hammer.Tap({event: 'singletap'}));
//hammertime.get('singletap').requireFailure('doubletap');
hammertime.on("doubletap", onDoubleTap);
hammertime.on("singletap", setupSingleTapTimeout);
function setupSingleTapTimeout() {
cancelSingleTapTimeout();
timeoutId = window.setTimeout(onSingleTap, 300);
}
function cancelSingleTapTimeout() {
if(timeoutId !== null) {
window.clearTimeout(timeoutId);
timeoutId = null;
}
}
function onDoubleTap() {
cancelSingleTapTimeout();
...
}
,但我會多過早地保持關注分離,離開這種對錘,工作也似乎喜歡的事就應該知道怎麼做..
這些人知道如何實現這一目標用錘子