2012-03-20 38 views
7

Tôi đang làm việc trên các sự kiện liên lạc nền tảng chéo. (swiping vv) Họ làm việc trên các thiết bị Android nhưng cho iPad sự kiện touchstart được bắn hai lần.Touchstart iPad kích hoạt hai lần

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; 

}; 

Chức năng này được kích hoạt hai lần trên iPad nhưng hoạt động bình thường trên Android.

Tôi nên thêm rằng nó kích hoạt touchstart, sau đó chạm vào, sau đó chạm và cuối cùng nó thực hiện một touchstart khác vì một lý do nào đó.

Dưới đây là trên JSFiddle: http://jsfiddle.net/6Lb3Z/1

Ảnh chụp màn hình: http://i.imgur.com/GS8uI.png

+1

Tôi vừa thử nghiệm trên iPad của mình và nó cháy một lần - http://jsfiddle.net/Kai/N7NA5/ – Kai

+0

Ok, cảm ơn vì điều đó, sự cố phải ở một nơi khác. Đây là trên JSFiddle: http://jsfiddle.net/6Lb3Z/ – Jasard

+0

Tôi cập nhật các fiddle để chạy một cách chính xác trên jsfiddle; Tôi vẫn chỉ thấy một cuộc gọi liên lạc: http://www.jsfiddle.net/6Lb3Z/1/ Tôi đang sử dụng iPad2 với iOS 5.1. Ảnh chụp màn hình http://i.imgur.com/Oz5z4.png – Kai

Trả lời

0

Nếu bạn đang sử dụng một thư viện như jQuery hoặc Zepto, sau đó bạn có thể sử dụng phương pháp .one.

Từ API documentation của jQuery:

Đính kèm một handler cho sự kiện cho các yếu tố. Trình xử lý được thực thi tối đa một lần cho mỗi phần tử.

+3

Không phải như vậy một lần - thay vì chỉ một lần cho mỗi lần chạm? –

Các vấn đề liên quan