长按代码封装(兼容PC和移动端)

/**
 * Created by Farris on 2018-08-20.
 *
 */

export default class LongTap {
    constructor(element, duration) {
        this.element = element;
        this.duration = duration || 600;  //长按触发的时长,默认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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值