2013-12-16 36 views
2

我有一個應用程序即時通訊建設與phonegap。聽touchend有時火災點擊事件手機

我聽了touchstart/touchend事件,使其響應。

有時候,事件偵聽touchend會火,但隨後,對e.g,輸入後會作爲點擊事件後發射300ms的焦點。

一個例子是,我有一個菜單欄。每個側邊欄列表項都會監聽touchend事件。在收到該事件後,側邊欄關閉並顯示相關頁面。但是,如果相關頁面包含用戶爲側邊欄列表項目單擊的表單元素,則表單元素將會變得焦點。

什麼是整個應用程序停止這一目標的最佳方式是什麼?它發生在各種情況下,隨着不同的手機而異。

我用盡之類的東西stopPropagation等,但這些只是工作INA少數情況下,我需要有一個通用的跨應用的解決方案,而不是針對每個功能增加,如果可能的話。

類似:

$('body').on('touchend', function(){ 
    //stop any further touchends/ clicks from firing 
    //apart from the 1 i do want 
}) 
+0

你嘗試過'event.preventDefault()'嗎? – Manishearth

+0

你應該看看[hammer.js(http://eightmedia.github.io/hammer.js/) - 它所有這種事情繁重 – CodingIntrigue

+0

喜,這同樣適用,但有時沒有按」 t似乎適用於所有情況編輯:for preventDefault()選項 – rpsep2

回答

0

你可以嘗試 'touchcancel' 而不是 'touchend',看看它是否工作:)好運氣。

0

您的應用程序去快;) 簡單的辦法: 只是把的setTimeout(GotoPage記述(),100) 上的每個按鈕/菜單操作

硬的方式: 如果你真的不想要把setTimeout的,你應該看看如何冒泡的作品,問題是在這裏

提示: 反正避免300ms的,你應該使用FTLABS的Fastclick: https://github.com/ftlabs/fastclick 和使用click事件,它會做爲你工作(你仍然必須使用setime out trick)