2013-03-12 31 views
11

Tôi đang hiển thị thanh thông báo trên trang web của mình, và thẳng thắn, nó không hoạt động tốt khi trên thiết bị di động. Tôi muốn hiển thị thanh CHỈ dành cho người dùng máy tính để bàn.Cách dễ nhất để xác định xem người dùng có đang sử dụng thiết bị di động hay không

Cách dễ nhất để xác định xem người dùng đang ở trên máy tính để bàn hay trên thiết bị di động là gì?

+4

Tôi nghĩ rằng bạn nên sử dụng các truy vấn phương tiện truyền thông để xác định khả năng thực tế thay vì sử dụng các đại lý để xác định khả năng giả. –

+1

Có thực sự không phải là một. Bạn nên khám phá * tại sao * nó không hoạt động (thiếu tính năng nào của điện thoại di động) và sử dụng tính năng phát hiện tính năng và truy vấn phương tiện để xác định xem có hiển thị hay không. – Chad

+0

thay vì phát hiện thiết bị di động so với máy tính để bàn, tôi nghĩ, trong trường hợp của bạn, điều này có ý nghĩa hơn khi phát hiện độ phân giải màn hình. – lbstr

Trả lời

6

Một kiểm tra user agent là "dễ nhất", mặc dù bạn có thể dễ dàng sử dụng CSS3 media queries

Dưới đây là một ví dụ để kiểm tra iphone, android và blackberry; bạn có thể dễ dàng thêm các trình duyệt di động khác.

var is_mobile = !!navigator.userAgent.match(/iphone|android|blackberry/ig) || false; 
+0

Vâng tôi đã không downvote (có vẻ như không ai đã làm bây giờ ...) nhưng biểu hiện thường xuyên của bạn là một chút thưa thớt. – Pointy

+0

Đủ công bằng, tôi không cố gắng bao quát tất cả các trình duyệt trên điện thoại di động, chỉ cần cung cấp ví dụ về cách thực hiện. Tôi cho là tôi nên nói điều đó. –

+1

@Pointy rất. Không thử cho Windows Phone chẳng hạn. Có lẽ các truy vấn phương tiện truyền thông là tốt nhất vì mỗi trình duyệt hiện nay một ngày thực hiện nó. –

7

tôi thấy rằng nó là tốt nhất để sử dụng tính năng phát hiện. Sử dụng Modernizr để phát hiện xem đó có phải là thiết bị cảm ứng hay không. Bạn có thể làm những việc như:

var mousedown = 'mousedown'; 

if (Modernizr.touch) { 
    mousedown = 'touchstart'; 
} 

$('.foo').on(mousedown, handleMouseDown); 

Và sau đó sử dụng CSS Media Truy vấn để xử lý chiều rộng màn hình (và cũng dễ dàng phát hiện chiều rộng màn hình bằng javascript). Bằng cách đó, bạn có thể xử lý chính xác các thiết bị cảm ứng có màn hình lớn hoặc thiết bị không chạm với màn hình nhỏ.

+2

...và bạn có thể ẩn/hiện/sửa đổi các phần tử bằng CSS vì Modernizr thêm lớp "cảm ứng" vào phần tử '' cho các thiết bị cảm ứng. Do đó, '.touch #notificationBar {display: none; } '... – Pointy

0

Nếu bạn sử dụng modernizr. một lớp "no-touch" sẽ được thêm vào phần tử. Bạn có thể ẩn thanh theo mặc định và thêm quy tắc css để hiển thị thanh nếu lớp "no-touch" tồn tại. Ví dụ:

mặc định:

.bar{display:none;}

máy tính để bàn:

.no-touch .bar{display:block;} 
+1

có thể không còn tối ưu nữa vì có thiết bị cảm ứng không di động rõ ràng -> xem mặt chuyên nghiệp (để công bằng nó có thể là máy tính bảng di động), chạm vào máy tính xách tay như lenovo, v.v. Tôi chắc chắn rằng một loạt các thiết bị cảm ứng hoàn toàn mới sẽ đến – Daemedeor

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