2010-08-16 11 views
6

Tôi đã đọc rằng nó xấu (không được thông báo) để sử dụng Sniffing User Agent để gửi nội dung chính xác cho một trình duyệt di động, vì vậy tôi tự hỏi IS là cách tốt nhất để làm điều này?Tôi làm cách nào để phát hiện trình duyệt dành cho thiết bị di động và hướng nội dung phù hợp đến nó?

Tôi đang sử dụng ASP.NET MVC và tôi đã xây dựng trang web của mình và nó hoạt động tốt trên các trình duyệt trên máy tính để bàn, vì vậy tôi đang tìm cách bắt đầu tạo phiên bản dành cho thiết bị di động. Khi một trình duyệt di động đến trang web của tôi, tôi muốn sử dụng một bộ khác nhau của xem, mà lý tưởng sở hữu các thuộc tính sau:

  1. Liên kết với trước quy mô hình ảnh
  2. Sử dụng tối thiểu javascript
  3. Remove tất cả trừ nội dung quan trọng

Suy nghĩ đầu tiên của tôi là đánh cắp tác nhân người dùng và sau đó gửi tệp .CSS khác, nhưng như đã nói ở trên, tôi đã đọc đây là cách không tốt để làm điều này, vì vậy tôi yêu cầu bạn suy nghĩ.

+1

có thể trùng lặp với [Phát hiện yêu cầu từ trình duyệt trên thiết bị di động trong ASP.NET] (http://stackoverflow.com/questions/2653765/detecting-requests-from-mobile-browsers-in-asp-net) – jfar

+0

@jfar, MVC có các yêu cầu cụ thể cho việc này. Xem bài Hanselman. AFAICS, câu trả lời bạn liên kết không bao gồm điều đó. –

+0

Bạn có thể thấy một số giải pháp ở đây: http://stackoverflow.com/questions/6844020/way-to-do-content-adaptation-to-mobile –

Trả lời

7

Tác nhân người dùng thực sự là tất cả những gì bạn có trong yêu cầu HTTP GET, nhưng bạn nên để người khác duy trì danh sách. Chúng tôi sử dụng Microsoft Mobile Device Browser File với công cụ chế độ xem tùy chỉnh theo cách tương tự như this Scott Hanselman post.

+0

Cảm ơn, đây là điều tôi đã nghĩ, đoán rằng tôi hiểu nhầm lý do tôi nói không. Tôi hoàn toàn đồng ý rằng việc duy trì một danh sách tương thích là một PITA! – Nate

1

Cách tiếp cận đơn giản nhất có thể là sử dụng tên miền riêng biệt "m.yourdomain.com" hoặc "yourdomain.mobi" (Source) theo cách đó bạn có thể giả định rằng người dùng đang sử dụng thiết bị di động.

+0

Trong trường hợp này, tôi có sử dụng tác nhân trình duyệt và cookie để chuyển hướng một lần không và liệu họ có quay trở lại hay không, giả sử tôi đã gắn nhãn người dùng của họ sai và cho phép họ tiếp tục trên trang web đầy đủ? – Nate

+0

Cách tiếp cận này có thể gây đau đớn. Bạn nên giả định rằng bất kỳ ai truy cập m.website.com đều muốn trang web trên điện thoại di động nhưng luôn cung cấp cho họ liên kết đến trang web đầy đủ ở chân trang. –

+0

@Nissan - đó là một ý tưởng hay, mặc dù tôi càng nghĩ về nó thì tôi càng tin chắc rằng câu trả lời của tôi không nhất thiết phải là một ý tưởng hay. – ChrisF

0

Trong khi tôi tin rằng nó cau mày khi đánh hơi để trình duyệt xác định khả năng và bạn nên sử dụng khả năng đánh hơi, chẳng hạn như JQuery.support. Khi nói đến thực sự trình bày bố trí khác nhau đáng kể thì tôi nghĩ bạn phải đánh hơi cho ID trình duyệt và hành động tương ứng.

+0

Điều đó hoạt động * sau khi trang được tải. * Khi trả lời yêu cầu 'GET' trên máy chủ, tuy nhiên, không có cách nào để thực hiện việc này. –

+0

@Craig - Tất nhiên, tôi đã suy nghĩ của mình từ phía máy khách nhưng vấn đề đang được xử lý từ phía máy chủ, nơi bạn rõ ràng chỉ có ID trình duyệt được cung cấp trong khi GET. – Lazarus