我正在开发跨平台触摸事件. (刷卡等)他们在
Android设备上工作,但对于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
解决方法
如果您使用的是jQuery或Zepto等库,则可以使用.one方法.
从jQuery的API documentation:
Attach a handler to an event for the elements. The handler is executed at most once per element.