2013-11-26 44 views
0

我正在構建一個使用DOM元素的簡單遊戲。我需要一個div(包含一個圖片)在用戶點擊屏幕後立即移動。使用mousedown可以完美地工作,但touchstart有一個非常明顯的延遲 - 使其無法用於快速反應遊戲。jquery touchstart延遲,比mousedown多得多?

我該如何減少這種延遲?

我的代碼:

_myScreen.on('touchstart mousedown', function(){screenClicked();}); 


function screenClicked(e) { 
    var y = e.offsetY; 
    model.css({top:y}); 
} 

回答

1

沒有在觸摸設備上一個300毫秒的延遲。以下是來自Icenium團隊的TJ VanToll的blog post,其中解釋了這種行爲的歷史和可能的解決方案。

從帖子摘錄:

雖然瀏覽器都拿出來了 300ms的延遲點擊一些有趣的解決方案,是根本不存在的解決方案,作品無處不在。 但是,有很多聰明人都想到了這個問題,併爲所有的 平臺提供了基於JavaScript的解決方案。這些解決方案可以分爲兩個陣營 - 指針事件模型的polyfills和「快速點擊」解決方案。

讓我們先看看一些指針事件polyfills。指針事件 Polyfills

有幾個polyfills用於指針事件。這裏是更受歡迎的 。

Polymer from Google 
HandJS from Microsoft 
Points by @Rich-Harris 

...

FastClick是FT實驗室特異性 旨在防止在移動瀏覽器的300ms的延遲點擊開發一個小型圖書館。

+0

謝謝! Fastclick正在爲點擊事件工作,解決了我的問題。然而,Touchstart仍然延遲。 – Kokodoko