Trình duyệt di động mô phỏng sự kiện chuột để hỗ trợ các trang web chỉ đính kèm trình xử lý cho sự kiện chuột. Tuy nhiên, nếu bạn muốn triển khai hai mô hình tương tác - một cho các sự kiện chuột và một cho sự kiện chạm - thì sẽ hữu ích nếu ngăn trình duyệt mô phỏng sự kiện chuột.Làm thế nào để ngăn chặn các sự kiện chuột mô phỏng trong các trình duyệt di động?
Trên iOS Safari này là khá đơn giản - chỉ cần chạy preventDefault trên touchend:
jQuery(document).on('touchend', function(e) {
// Do some logic
e.preventDefault();
});
Đó là khá lành mạnh. Thật không may, cả trình duyệt mặc định của Android lẫn Dolfin đều không hủy mô phỏng chuột bằng kỹ thuật này. (Dolfin sẽ hủy bỏ mousedown khi ngăn chặnDefault được chạy trên touchstart - nhưng đó không phải là rất hữu ích, bởi vì bạn không biết những gì hành động ngón tay sẽ đưa vào touchstart.)
Có một số cách khác có điều kiện, hoặc thậm chí không có điều kiện , ngăn chặn các sự kiện chuột được mô phỏng kích hoạt?
[EDIT]
Để bắt đầu hiểu vấn đề (s) tốt hơn, tôi đã bắt đầu một bảng tương thích các sự kiện liên lạc tại địa chỉ: http://labs.cruncher.ch/touch-events-compatibility-table/
Ngoài ra, nhận xét từ trải nghiệm với Chrome hoặc FF di động được đánh giá cao. – stephband
Bạn có thể phát hiện xem đó là trình duyệt dành cho thiết bị di động hay không trước khi đính kèm các sự kiện chuột? –
@JaredFarrish Các phương pháp phát hiện trình duyệt di động không bao giờ chính xác 100%. –