2011-08-14 14 views
47

Giả sử tôi đang nghe touchstart, touchmovetouchend trên phần tử body.Biến đổi của e.touches, e.targetTouches và e.changedTouches

Hãy cho tôi biết nếu tôi sai, nhưng tôi nghĩ rằng e.touches giống với e.targetTouches? Nếu vậy, làm thế nào e.changedTouches thay đổi liên quan đến chúng?

Ý tôi là, với một lần chạm tại một thời điểm cụ thể, tôi lấy nét chạm và phân tích cú pháp đó. Theo kinh nghiệm của tôi, cả ba biến cảm ứng đều giống nhau.

Tôi phải gửi dữ liệu đã phân tích cú pháp đến máy chủ và nó khá dư thừa để gửi ba lần cùng một chuỗi chính xác, không có cách nào để gửi chúng một lần và lập trình tái tạo cảm ứng trên máy chủ?

Trả lời

144

Chúng tôi có các danh mục sau:

  • touches: Một danh sách các thông tin cho mỗi ngón tay hiện chạm vào màn hình
  • targetTouches: Giống như chạm, nhưng được lọc để chỉ các thông tin cho chạm ngón tay mà bắt đầu ra trong cùng một nút
  • changedTouches: Danh sách thông tin cho mọi ngón tay tham gia sự kiện (xem bên dưới) Để hiểu rõ hơn những gì có thể có trong các danh sách này, hãy xem qua một số ví dụ nhanh chóng

Họ khác nhau về mô hình sau:

  • Khi tôi đặt một ngón tay xuống, cả ba danh sách này sẽ có những thông tin tương tự. Nó sẽ ở trong changedTouches vì đặt ngón tay xuống là nguyên nhân gây ra sự kiện
  • Khi tôi đặt ngón tay thứ hai xuống, touches sẽ có hai mục, một cho mỗi ngón tay. targetTouches sẽ chỉ có hai mục nếu ngón tay được đặt trong cùng một nút với ngón tay đầu tiên. changedTouches sẽ có những thông tin liên quan đến ngón tay thứ hai, bởi vì đó là những gì gây ra sự kiện
  • Nếu tôi đặt hai ngón tay xuống ở chính xác cùng một lúc, nó có thể có hai mục trong changedTouches, một cho mỗi ngón tay
  • Nếu tôi di chuyển ngón tay của tôi, danh sách duy nhất sẽ thay đổi là changedTouches và sẽ chứa thông tin liên quan đến nhiều ngón tay như đã di chuyển (ít nhất một ngón tay).
  • Khi tôi nhấc một ngón tay, nó sẽ được xóa khỏi touches, targetTouches và sẽ xuất hiện trong changedTouches vì nó là những gì gây ra sự kiện
  • Loại bỏ ngón tay cuối cùng của tôi sẽ rời touchestargetTouches trống rỗng, và changedTouches sẽ chứa thông tin cho người cuối cùng ngón tay
+1

Bạn có thể làm rõ cụm từ nút không? – Martin

+1

HTML Element ... –

+1

Thông tin này có chính xác cho tất cả các thiết bị, tức là môi trường Android và Safari không? – David