2012-03-20 78 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