Tôi đang cố gắng làm cho một số thư viện của mình hoạt động với các thiết bị cảm ứng, nhưng tôi đang gặp khó khăn khi cố gắng tìm hiểu cách chúng được hỗ trợ và cách chúng hoạt động.
Về cơ bản, có 5 sự kiện chạm , nhưng có vẻ như chỉ có sự đồng thuận giữa các trình duyệt di động về touchstartsự kiện này (duh). Tôi đã tạo một fiddle như một trường hợp thử nghiệm.
Tôi đã thử nghiệm điều này trên Galaxy Note của mình với Android 4 trên bo mạch, nhưng bạn cũng có thể kiểm tra liên kết bằng trình duyệt trên máy tính để bàn.
Mục đích là cố gắng tìm ra cách xử lý các vòi, vòi kép và vòi dài. Không có gì lạ mắt.
Về cơ bản, đây là những gì sẽ xảy ra:
Các trình duyệt cổ Android làm sự kiện liên lạc không cháy. Nó chỉ cố gắng bắt chước cú click chuột với vòi nước, bắn mousedown, mouseupvà clickcác sự kiện liên tiếp, nhưng vòi đôi chỉ phóng to trong và ngoài trang tha.
Chrome dành cho Android kích hoạt sự kiện bắt đầu cảm ứng khi ngón tay chạm vào màn hình. Nếu nó được phát hành đủ sớm, nó cháy rồi mousedown, mouseup, touchendvà cuối cùng là clicksự kiện.
Trong trường hợp vòi dài , sau khoảng một nửa thứ hai nó cháy mousedownvà mouseup, và touchendkhi ngón tay được nâng lên, không có clicksự kiện ở cuối.
Nếu bạn di chuyển ngón tay , nó sẽ kích hoạt một touchmovesự kiện vài lần, sau đó nó kích hoạt một touchcancelsự kiện và không có gì xảy ra sau đó, thậm chí không xảy ra touchendsự kiện khi nhấc ngón tay lên.
Một chạm đúp trigger zoom in / out tính năng, nhưng sự kiện-khôn ngoan nó bắn combo touchstart- toucheventhai lần, không có sự kiện chuột sa thải.
Firefox dành cho Android bắn một cách chính xác các touchstartsự kiện, và trong trường hợp cháy vòi ngắn mousedown, mouseup, touchendvà clicksau đó.
Trong trường hợp vòi dài , nó cháy mousedown, mouseupvà cuối cùng là touchendsự kiện. Chrome cũng vậy cho những thứ này.
Nhưng nếu bạn di chuyển ngón tay của bạn , nếu cháy touchmoveliên tục (như người ta có thể mong đợi) nhưng nó doesn không bắn các touchleavesự kiện khi lá ngón tay các phần tử với người nghe sự kiện, và không cháy, các touchcancelsự kiện khi ngón tay được ra khỏi khung nhìn trình duyệt .
Đối với các lần nhấn đúp , nó hoạt động giống như Chrome.
Opera Mobile làm điều tương tự của Chrome và Firefox chỉ với một lần nhấn ngắn, nhưng trong trường hợp nhấn lâu, sẽ kích hoạt một số loại tính năng chia sẻ mà tôi thực sự muốn tắt. Nếu bạn di chuyển ngón tay hoặc nhấn đúp, nó sẽ hoạt động giống như Firefox.
Chrome beta hiện thông thường cho vòi ngắn, nhưng trong trường hợp của vòi dài nó không cháy các mouseupsự kiện nữa, chỉ touchstart, sau đó mousedownsau một hiệp hai, sau đó touchendkhi các ngón tay được nâng lên. Khi ngón tay được di chuyển, bây giờ nó hoạt động giống như Firefox và Opera Mobile.
Trong trường hợp nhấn đúp , nó không kích hoạt các sự kiện chạm khi thu nhỏ mà chỉ kích hoạt khi phóng to.
Phiên bản beta của Chrome cho thấy hành vi kỳ lạ nhất, nhưng tôi thực sự không thể phàn nàn vì nó là bản beta.
Câu hỏi đặt ra là : có cách nào đơn giản và dễ dàng để cố gắng phát hiện các lần nhấn ngắn, vòi dài và nhấn đúp trong các trình duyệt phổ biến nhất của thiết bị cảm ứng không?
Thật tệ, tôi không thể kiểm tra nó trên các thiết bị iOS có Safari hoặc IE cho Windows Phone 7 / Phone 8 / RT, nhưng nếu một số bạn có thể, phản hồi của bạn sẽ rất được đánh giá cao.
