2012-03-20 48 views
7

我正在開發跨平臺觸摸事件。 (刷卡等)他們在Android設備上工作,但對於iPad而言,touchstart事件發射兩次。iPad touchstart發射兩次

this.element.addEventListener('touchstart', mousedown, false); 

var mousedown = function(event) { 
    // Finger Press 
    event.preventDefault(); 
    _this.inGesture = true; 
    _this._originalX = (event.touches) ? event.touches[0].pageX : event.pageX; 
    _this._originalY = (event.touches) ? event.touches[0].pageY : event.pageY; 

}; 

此功能在iPad上觸發兩次,但在Android上正常工作。

我應該補充說,它觸發touchstart,然後touchmove,然後touchend,最後它由於某種原因做了另一個touchstart。

這是對的jsfiddle:http://jsfiddle.net/6Lb3Z/1

截圖:http://i.imgur.com/GS8uI.png

+1

我只是測試了我的iPad,它觸發一次 - http://jsfiddle.net/Kai/N7NA5/ – Kai 2012-03-20 17:20:02

+0

好感謝爲,這個問題必須在別處。這裏是JSFiddle:http://jsfiddle.net/6Lb3Z/ – Jasard 2012-03-20 17:32:44

+0

我更新了小提琴在jsfiddle上正確運行;我仍然看到只有一個touchstart調用:http://www.jsfiddle.net/6Lb3Z/1/我使用iOS5的iPad2。截圖http://i.imgur.com/Oz5z4.png – Kai 2012-03-21 00:40:15

回答

0

如果您正在使用像jQuery或的Zepto一個圖書館,那麼你可以使用.one方法。

從jQuery的的API documentation

附加的處理程序,爲元素的事件。該處理程序每​​個元素最多執行一次 。

+3

是不是曾經有過 - 而不是每次觸摸一次? – 2012-07-31 13:12:38