Tôi đang làm việc trên một trang web di động phải hoạt động trên nhiều thiết bị. Người khiến tôi đau đầu nhất lúc này là BlackBerry.
Chúng tôi cần hỗ trợ cả nhấp chuột trên bàn phím cũng như các sự kiện chạm.
Lý tưởng nhất là tôi chỉ sử dụng:
$thing.click(function(){...})
nhưng vấn đề chúng ta gặp phải là một số thiết bị blackberry này có độ trễ rất khó chịu từ lúc chạm đến khi kích hoạt nó.
Biện pháp khắc phục là thay vì sử dụng touchstart:
$thing.bind('touchstart', function(event){...})
Nhưng làm thế nào để tôi ràng buộc cả hai sự kiện, nhưng chỉ bắn một sự kiện? Tôi vẫn cần sự kiện nhấp cho các thiết bị bàn phím, nhưng tất nhiên, không muốn sự kiện nhấp phát sinh nếu tôi đang sử dụng thiết bị cảm ứng.
Một câu hỏi về phần thưởng: Có cách nào để làm điều này và bổ sung các trình duyệt thậm chí không có sự kiện khởi động không? Trong nghiên cứu này, có vẻ như BlackBerry OS5 không hỗ trợ khởi động, do đó cũng cần phải dựa vào các sự kiện nhấp chuột cho trình duyệt đó.
ĐỊA CHỈ:
Có lẽ một câu hỏi toàn diện hơn là:
Với jQuery, có thể / được đề nghị xử lý cả tương tác chạm và tương tác chuột với cùng một ràng buộc không?
Lý tưởng nhất, câu trả lời là có. Nếu không, tôi có một số tùy chọn:
1) Chúng tôi sử dụng WURFL để lấy thông tin thiết bị để có thể tạo ma trận thiết bị của riêng mình. Tùy thuộc vào thiết bị, chúng tôi sẽ sử dụng touchstart HOẶC nhấp chuột.
2) Phát hiện hỗ trợ cảm ứng trong trình duyệt thông qua JS (Tôi cần thực hiện thêm một số nghiên cứu về điều đó, nhưng có vẻ như điều đó là có thể thực hiện được).
Tuy nhiên, điều đó vẫn để lại một vấn đề: những thiết bị hỗ trợ CẢ HAI thì sao. Một số điện thoại chúng tôi hỗ trợ (cụ thể là Nokias và BlackBerry) có cả màn hình cảm ứng và bàn phím. Vì vậy, kiểu đó đưa tôi trở lại vòng tròn đầy đủ cho câu hỏi ban đầu ... có cách nào để cho phép cả hai cùng một lúc không?
.bind('touchstart mouseup')
sẽ giải quyết nó (dựa trên một trong những ý kiến dưới đây)