在移动设备上的clearTimeout / setTimeout

苹果浏览器

我必须制作一个具有以下功能的按钮:

如果单击它,它应该显示一些线条并在3秒后隐藏它们,但是如果在3秒钟结束之前单击该按钮,这些线条也应该隐藏。

我编写了一些可以在桌面浏览器上完美运行的代码,但是在移动浏览器上却不能。Android设备似乎忽略了我的clearTimeout,而在iPhone上,它似乎更像是一个“ buttonPressed”事件。

我创建了一个jsfiddle,以便您可以看到我写的内容。

var timeout = null;
var buttonCallback = function() {
    if( timeout === null ) {
        log('show lines');
        timeout = setTimeout(buttonCallback, 3000);
    }
    else {
        clearTimeout(timeout);
        timeout = null;
        log('hide lines');
    }
}


var hammerElement = Hammer(document.getElementById('showLines'));

hammerElement.on("touch", function(e) {
    e.preventDefault()
    buttonCallback();
});

知道如何使这种行为适用于移动浏览器吗?

苹果浏览器

错误是在我正在测试的某些移动设备上(不是全部!)有时会发送2个标签事件(双标签)。

为了解决这个问题,我添加了delayTime并检查了上次调用该函数的时间。

var buttonCallback = function() {
    if( timeout === null ) {
        //for old slow andoid devices
        if ((new Date().getTime() - delayTime) < 2200) 
            return;
        delayTime = new Date().getTime();
        log('show lines');
        timeout = setTimeout(buttonCallback, 3000);
    }
    // for fast devices to prevent the double tab error
    else if ( (new Date().getTime() - delayTime) > 1200 ) {
        clearTimeout(timeout);
        timeout = null;
        log('hide lines');
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在移动设备上使用setTimeout播放音频?

来自分类Dev

使用clearTimeout中断setTimeout

来自分类Dev

尽管clearTimeout仍然触发setTimeout

来自分类Dev

javascript:setTimeout和clearTimeout问题

来自分类Dev

reactJS 中的 setTimeout 和 clearTimeout

来自分类Dev

具有setTimeout和clearTimeout的可变范围

来自分类Dev

如何在Dart中执行setTimeout + clearTimeout?

来自分类Dev

在调用clearTimeout之后,setTimeout继续运行

来自分类Dev

Javascript setTimeout/clearTimeout 在电子中的奇怪行为

来自分类Dev

Angular 6 setTimeout 和 clearTimeout 错误

来自分类Dev

setTimeout 在移动 Safari 上间歇性不起作用?

来自分类Dev

Ava在addEventListener()上测试setTimeout()

来自分类Dev

setTimeout在for循环内的promises上

来自分类Dev

监视Karma和Jasmine中的setTimeout和clearTimeout

来自分类Dev

Android相当于setTimeout和javascript的clearTimeout?

来自分类Dev

How do I do the equivalent of setTimeout + clearTimeout in Dart?

来自分类Dev

将clearTimeout与setTimeout的多个实例一起使用

来自分类Dev

为什么setTimeout代码在clearTimeout之后仍然执行

来自分类Dev

jQuery/JS setTimeout() 在 clearTimeout() 调用后仍然运行

来自分类Dev

Raspberry PI上NodeJS中的long setTimeout

来自分类Dev

Internet Explorer上的AJAX和setTimeout

来自分类Dev

我如何在nodeJS上扩展setTimeout

来自分类Dev

如何在vuex操作上使用setTimeout?

来自分类Dev

在setTimeout上使用fadeIn fadeOut吗?

来自分类Dev

clearTimeout和clearInterval在移动设备上不起作用

来自分类Dev

clearTimeout和clearInterval在移动设备上不起作用

来自分类Dev

为什么需要两次调用clearTimeout来重置setTimeout

来自分类Dev

无法在流星应用程序上使用setTimeout()函数

来自分类Dev

setTimeout如何在javascript中工作(理论上)

Related 相关文章

  1. 1

    如何在移动设备上使用setTimeout播放音频?

  2. 2

    使用clearTimeout中断setTimeout

  3. 3

    尽管clearTimeout仍然触发setTimeout

  4. 4

    javascript:setTimeout和clearTimeout问题

  5. 5

    reactJS 中的 setTimeout 和 clearTimeout

  6. 6

    具有setTimeout和clearTimeout的可变范围

  7. 7

    如何在Dart中执行setTimeout + clearTimeout?

  8. 8

    在调用clearTimeout之后,setTimeout继续运行

  9. 9

    Javascript setTimeout/clearTimeout 在电子中的奇怪行为

  10. 10

    Angular 6 setTimeout 和 clearTimeout 错误

  11. 11

    setTimeout 在移动 Safari 上间歇性不起作用?

  12. 12

    Ava在addEventListener()上测试setTimeout()

  13. 13

    setTimeout在for循环内的promises上

  14. 14

    监视Karma和Jasmine中的setTimeout和clearTimeout

  15. 15

    Android相当于setTimeout和javascript的clearTimeout?

  16. 16

    How do I do the equivalent of setTimeout + clearTimeout in Dart?

  17. 17

    将clearTimeout与setTimeout的多个实例一起使用

  18. 18

    为什么setTimeout代码在clearTimeout之后仍然执行

  19. 19

    jQuery/JS setTimeout() 在 clearTimeout() 调用后仍然运行

  20. 20

    Raspberry PI上NodeJS中的long setTimeout

  21. 21

    Internet Explorer上的AJAX和setTimeout

  22. 22

    我如何在nodeJS上扩展setTimeout

  23. 23

    如何在vuex操作上使用setTimeout?

  24. 24

    在setTimeout上使用fadeIn fadeOut吗?

  25. 25

    clearTimeout和clearInterval在移动设备上不起作用

  26. 26

    clearTimeout和clearInterval在移动设备上不起作用

  27. 27

    为什么需要两次调用clearTimeout来重置setTimeout

  28. 28

    无法在流星应用程序上使用setTimeout()函数

  29. 29

    setTimeout如何在javascript中工作(理论上)

热门标签

归档