2013-07-18 58 views
1

我想让这个map在触摸屏上工作(必须启用WebGL)。touchmove事件并非总是在Chrome浏览器上触发

在Android上使用Firefox可以正常工作。但对于Chrome来说,最初如果我触摸它的屏幕,它会起作用,但是如果我释放屏幕并快速再次触摸(在我释放屏幕后不到1或2秒),则不会触发任何touchmove事件。如果等待时间足够长,我会正确收到touchmove事件。

下面是一些相关的代码(很抱歉,我不能提供完整的源代码):

canvas.on('touchstart', function() { 
    //init drag 
    e.preventDefault(); 
    return false; 
}); 
canvas.on('touchmove', function() { 
    //move the map 
    e.preventDefault(); 
    return false; 
}); 
canvas.on('touchend', function() { 
    //stop drag 
    e.preventDefault(); 
    return false; 
}); 

我试图与不preventDefaultreturn false,没有成功。我错过了什么 ?

您可以重现此问题与Chrome for Android,首先启用的WebGL(去chrome://flags并启用的WebGL)herehere for a more beautiful view

回答

3

感觉就像您的应用在touchEnd上阻塞一样。 touchmove在地址栏更新之后再次运行。它可能是错误的window.location.replace? 在window.location.replace中,我在使用硬件加速功能的网站上遇到类似的阻塞。

+0

我会尝试禁用地址更新。 – Jazz

+0

禁用URL更新的确可以解决问题!由于我已经使用'replaceState',我必须找到另一种解决方法。 – Jazz

+1

顺便说一句,在Chrome桌面上有相同的错误。 – Grsmto

相关问题