移动端开发,javascript如何监听用户是长按界面?
阿神
阿神 2017-04-10 15:41:48
[JavaScript讨论组]

如题,需要用户按住界面上一个按钮两秒钟然后才能执行别的操作,如何判断用户是否长按界面2s

阿神
阿神

闭关修行中......

全部回复(4)
ringa_lee

touchstart touchend 用这两个时间就行, start 的适合记录当前时间 new Date().getTime() ,End 的时候做时间差,大于2000 就是 2s 了.

扩展: 给 start 一个 setTimeout, 如果 end 的时候小于 2s 就 clearTimeout . 否则 setTimeout 就执行了,不会出现按下4 5秒才抬手的问题.

PHPz

示意代码:

var pressFlag;

$("#btn").on("touchstart", handleTouch).on("touchend", handleTouch);

function handleTouch(event){
    var timeLimit = 2000;

    if(event.type === "touchstart"){
        pressFlag = setTimeout(doSomethingWhenLongPress, timeLimit);
    }else if(event.type === "touchend"){
        clearTimeout(pressFlag);
    }
}
怪我咯
var btn = document.querySelector("a#btn");
var start = 0;
btn.addEventListener("touchstart", function(event) {
    event.preventDefault();
    start = new Date();
    var tId = setTimeout(function() {
        var end = new Date();
        var time = end - start;
        event.target.innerHTML = "你已经长按" + (time / 100) + "S";
        (end - start < 2000) && setTimeout(arguments.callee, 10);
    }, 10);
}, false);
btn.addEventListener("touchend", function(event) {
    event.preventDefault();
    (new Date() - start > 2000) && (console.log("长按超过两秒"));
}, false);
巴扎黑

个人觉得,没有必要设定2s这么苛刻,可以和产品商量下,就是一个longtap罢了。

没有因为这么2s多写一些函数。直接用zepto的longtap属性就行了

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号