0

我有一个问题,在 android 设备上,ClearInterval 命令不起作用。如果我在 IOS 上使用它,它会很有魅力!完美清除,但在android上对我来说不会清除。为什么是这样?老实说,我无法弄清楚!我运行了一些警报,它正在进入触摸启动,触摸结束和超时运行完美,但它的时间间隔不会被清除!

我的代码:

var touchticker = null;
var touchtickerint = null;

//TouchStart Volume UP
$("#volumeup").on("touchstart", function() {
    touchticker = setTimeout(function() {
        touchtickerint = setInterval(function() 
        {
            $("#volumeup").click();
        }, 100);
    }, 500);
});

//TouchEnd Clear Timeout
$(document).on("touchend", function() 
{
    clearInterval(touchtickerint);
    clearTimeout(touchticker);
});
4

1 回答 1

1

来自https://github.com/TNT-RoX/android-swipe-shim

在某些 Android 设备上,当用户触摸屏幕时会触发 touchstart 事件,Android 会将事件传递给 WebView (javascript) 进行处理。如果 WebView 没有阻止默认(200 毫秒内),Android 会恢复原生滚动并停止将触摸事件传递给 WebView。

对此的解决方案主要是在 touchstart 上阻止Default 并使用 javascript 手动滚动。

var touchticker = null,
    touchtickerint = null,
    volumeup = $("#volumeup"),
    isAndroid = /Android/i.test(navigato​r.userAgent);

//TouchStart Volume UP
volumeup.on("touchstart", function(event) {
    if (isAndroid) { event.preventDefault(); volumeup.click(); }
    touchticker = setTimeout(function() {
        clearInterval(touchtickerint);
        touchtickerint = setInterval(function() {
            volumeup.click();
        }, 100);
    }, 500);
});

//TouchEnd Volume UP, Clear Timeout
$(document).on('touchend touchcancel', function() {
    clearInterval(touchtickerint);
    clearTimeout(touchticker);
});
于 2016-11-23T18:52:20.527 回答