2016-11-23 80 views
0

我有一个问题,在android设备上,ClearInterval命令无法正常工作。如果我在IOS上使用它,它的魅力!完美清除,但在Android上它不会为我清楚。为什么是这样?我不能诚实地弄清楚它!我跑了一些警报,它正在进入触发器,并且touchend和超时运行完美,但它的时间间隔不会被清除!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); 
}); 

回答

1

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

在部分Android装置当用户触摸一个touchstart 事件被激发屏幕,机器人将事件传递到web视图(JavaScript的),以是 处理。如果WebView不能防止默认情况(在200ms内),则Android 将恢复本机滚动并停止将触摸事件传递给WebView。

对此的解决方案主要是为了防止touchstartDefault和使用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); 
}); 
+0

会给这个去,并会回来的结果!看起来很有希望。所以烦人它如何在iOS上工作,而不是android虽然,仍然不知道这是为什么!任何人,将回来的结果。谢谢! – irishwill200

+0

嗨@Annarfych没有工作! – irishwill200

+0

您是否尝试过使用完整的调用:window.clearInterval? Idk如果这会有所帮助,但也许会尝试一下。 – Lacrioque