2013-07-18 95 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

相關問題