2012-01-20 24 views
10

Điều này trái ngược với việc phát hiện hỗ trợ cảm ứng trong trình duyệt. Làm thế nào tôi có thể phát hiện xem trình duyệt có hỗ trợ chuột không? Chrome dành cho máy tính để bàn phải trả về true, Safari cho iPad sẽ trả về false.Phát hiện hỗ trợ chuột

Tôi nghĩ rằng các trình duyệt trên điện thoại di động sẽ trả về các kết quả dương tính giả cho các thủ thuật phát hiện thông thường.

Trả lời

0

Về mặt lý thuyết, bạn sẽ có thể kiểm tra xem nó có hỗ trợ cảm ứng hay không, sau đó quay ngược lại. Tôi có thể sai, nhưng theo như tôi biết, các trình duyệt không hỗ trợ sự kiện chạm sẽ hỗ trợ sự kiện chuột và ngược lại, vì sự khác biệt giữa hai trình duyệt này thường là thiết bị di động so với trình duyệt thông thường.

EDIT: Một khả năng khác có thể đang sử dụng onmousemove giống như cách bạn sử dụng ontouchmove để phát hiện khả năng chạm. Tuy nhiên, tôi không chắc liệu các trình duyệt di động có đăng ký onmousemove hay không.

+1

Điều gì về một người nào đó đang sử dụng thiết bị tất cả trong một với màn hình cảm ứng và chuột? – qwertymk

+0

Tôi cho rằng trang web của bạn sẽ không hoạt động theo cách bạn thực sự muốn, nhưng liệu nó có đảm bảo sự khắc phục hay không phụ thuộc vào mức độ phổ biến của các trình duyệt đó, những gì anh ta làm với nó và liệu mọi người trên các thiết bị đó có muốn sử dụng trang web. Đây là một cách giải quyết khả thi. – CSturgess

+1

Điều này sẽ không hoạt động. Desktop Firefox trả về true cho việc phát hiện cảm ứng. Họ sử dụng cùng một mã cơ sở trên máy tính để bàn và thiết bị di động. – Matthew

0

Phương pháp này kiểm tra xem đối tượng Touch có tồn tại mà không sử dụng sự kiện hay không. Nếu không, bạn có một con chuột. Tôi nghĩ đó là cách dễ nhất để làm điều đó. Nó sẽ trả về false trên thiết bị hiếm có liên lạc và chuột, vì vậy bạn sẽ phải quyết định xem thiết bị đó có ảnh hưởng đến thiết kế của bạn hay không.

function hasTouch() { 
    return (typeof Touch == 'object'); 
}; 

Demo: http://jsfiddle.net/ThinkingStiff/ux89v/

Script:

function hasTouch() { 
    return (typeof Touch == 'object'); 
}; 

document.getElementById('touch').textContent = 'Mouse: ' + !hasTouch(); 

HTML:

<div id="touch"></div> 
+1

Thiết bị có chuột và cảm ứng sẽ trở nên ít hơn và ít hiếm hơn trong những tháng/năm tới với màn hình cảm ứng bắt đầu xuất hiện trên máy tính xách tay và máy tính để bàn .. Tôi không hiểu tại sao Touch không nhất thiết phải là đối tượng trên các thiết bị này? –

+0

@Jonhoo Có chính xác. Tôi đã chỉ gỡ lỗi hành vi lạ trong ứng dụng web dự án sở thích của mình và nhận thấy rằng mã Javascript của tôi tin rằng máy tính xách tay 17 inch của tôi có màn hình cảm ứng là ... điện thoại di động hoặc một cái gì đó tương tự. Vì nó có một màn hình cảm ứng. – KajMagnus

1

Trong các trình duyệt sử dụng Sự kiện Touch:

var clickEvent = ('ontouchstart' in window ? 'touchend' : 'click'); về cơ bản là nói "nếu chạm vào thiết bị, chỉ nghe chạm và không nhấp" - trong đó, trên thiết bị nhiều đầu vào, ngay lập tức tắt mọi tương tác qua chuột, bàn di chuột hoặc bàn phím.

Bài viết này thảo luận về câu hỏi của bạn trong chi tiết here

Một bài viết sâu sắc here

Nhưng, tất cả phụ thuộc vào những gì bạn muốn đạt được.

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