/**
* Created by Farris on 2018-08-20.
*
*/
export default class LongTap {
constructor(element, duration) {
this.element = element;
this.duration = duration || ; //長按觸發的時長,預設600毫秒
this.timer = null;
this.startEvent = "touchstart";
this.moveEvent = "touchmove";
this.endEvent = "touchend";
this.eventJudge();
}
longTap(callback) {
console.log(this.startEvent, this.moveEvent, this.endEvent);
this.element.addEventListener(this.startEvent, () => this.touchStart(callback), false);
this.element.addEventListener(this.moveEvent, () => this.touchMove(), false);
this.element.addEventListener(this.endEvent, () => this.touchEnd(), false);
}
touchStart(callback) {
let cb = (...args) => typeof callback === "function" && callback(...args);
this.timer = setTimeout(() => cb(), this.duration);
}
touchMove() {
this.timer && clearTimeout(this.timer);
}
touchEnd() {
this.timer && clearTimeout(this.timer);
}
//判斷是移動端還是PC端
eventJudge() {
let click = ["mousedown", "mouseout", "mouseup"];
let touch = ["touchstart", "touchmove", "touchend"];
let touchSupport = "ontouchstart" in window;
[this.startEvent, this.moveEvent, this.endEvent] = touchSupport ? touch : click;
}
} 複制代碼
使用方法:
const app = new LongTap(document.getElementById("app"), 800);
app.longTap(()=>console.log("長按~~~~~~~"));複制代碼
轉載于:https://juejin.im/post/5b7b899a51882542cb40900b