帖子
帖子
用户
博客
课程
12下一页
返回列表 发新帖
显示全部楼层
25
帖子
0
勋章
109
Y币

[其他] 怎么给对象添加长按事件(longpress)?

[复制链接]
发表于 2018-5-30 10:48:30
长按事件可以获取到长按的对象吗?或者只给某个对象绑定,例如某个div
13
帖子
6
勋章
105
Y币
  1. function getTimeNow() {  
  2.         var now=new Date();  
  3.         return now.getTime();  
  4.     }  
  5.        
  6.         function touchend(){
  7.                 clearInterval(time);//如果按下时间不到1000毫秒便弹起,  
  8.         }
  9.        
  10.         function touchstart(obj){
  11.                 timeStart=getTimeNow();//获取鼠标按下时的时间  
  12.         time=setInterval(function(){  
  13.             timeEnd=getTimeNow();//也就是每100毫秒获取一次时间  
  14.             if(timeEnd-timeStart>700)//如果此时检测到的时间与第一次获取的时间差有1000毫秒  
  15.             {  
  16.                 clearInterval(time);//便不再继续重复此函数 (clearInterval取消周期性执行)  
  17.                             if($api.attr($api.last(obj),'style')){
  18.                                     $api.removeAttr($api.last(obj),'style');
  19.                             }
  20.             }  
  21.             },100);  
  22.         }
  23.        
  24.        
复制代码
上面回复的没显示出来,再发一遍,time要定义全局变量
13
帖子
6
勋章
105
Y币
在div的标签里用这三个句柄ontouchend="touchend()" ontouchmove="touchend()" ontouchstart="touchstart(this);"
13
帖子
6
勋章
105
Y币
本帖最后由 maokun00 于 2018-5-30 11:14 编辑
  1. <blockquote> function getTimeNow() {  
复制代码
25
帖子
0
勋章
109
Y币
maokun00 发表于 2018-5-30 11:15
上面回复的没显示出来,再发一遍,time要定义全局变量

跟longpress没啥关系?
13
帖子
6
勋章
105
Y币
NapChen 发表于 2018-5-30 11:21
跟longpress没啥关系?

longpress事件监听?
25
帖子
0
勋章
109
Y币
maokun00 发表于 2018-5-30 11:24
longpress事件监听?

对啊,用longpress监听,但是好像拿不到长按的对象?你上面的代码我试过了,好像也不行啊<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8">
    <meta name="viewport" content="maximum-scale=1.0,minimum-scale=1.0,user-scalable=0,width=device-width,initial-scale=1.0" />
    <title>title</title>
    <link rel="stylesheet" type="text/css" href="../../css/aui.css" />
</head>

<body>
    <div class="aui-content aui-margin-b-15">
        <div>
            <h1>按我</h1></div>
    </div>
</body>
<script type="text/javascript" src="../../script/api.js"></script>
<script type="text/javascript">
    apiready = function() {
        api.addEventListener({
            name: 'longpress'
        }, function(ret, err) {
            console.log(JSON.stringify(ret));
            console.log(JSON.stringify(err));
            alert('长按了页面');
        });
    }

    var time;

    function getTimeNow() {
        var now = new Date();
        return now.getTime();
    }

    function touchend() {
        clearInterval(time); //如果按下时间不到1000毫秒便弹起,
    }

    function touchstart(obj) {
        timeStart = getTimeNow(); //获取鼠标按下时的时间
        time = setInterval(function() {
            timeEnd = getTimeNow(); //也就是每100毫秒获取一次时间
            if (timeEnd - timeStart > 700) //如果此时检测到的时间与第一次获取的时间差有1000毫秒
            {
                clearInterval(time); //便不再继续重复此函数 (clearInterval取消周期性执行)
                if ($api.attr($api.last(obj), 'style')) {
                    $api.removeAttr($api.last(obj), 'style');
                }
            }
        }, 100);

        alert(obj.innerHtml)
    }
</script>

</html>

13
帖子
6
勋章
105
Y币
longpress是屏幕的长按事件,并不能具体到哪一个元素,所以不用这个事件监听
25
帖子
0
勋章
109
Y币
maokun00 发表于 2018-5-30 11:53
ontouchend="touchend()" ontouchmove="touchend()" ontouchstart="touchstart(this);"这些个事件句柄都 ...

已经测试成功了,感谢你的耐心解答
13
帖子
6
勋章
105
Y币
NapChen 发表于 2018-5-30 12:28
已经测试成功了,感谢你的耐心解答

客气了,互帮互助应该的
12下一页
您需要登录后才可以回帖 登录

本版积分规则