2009-07-13 33 views
19

Chúng tôi đã có một phiên bản thay thế của trang web đã sẵn sàng cho thiết bị di động. Nội dung chúng tôi phân phát khác nhau và hoạt động tốt.Chuyển hướng thiết bị di động đến phiên bản thay thế của trang web của tôi

Cách tốt nhất để phát hiện phiên bản nào cần phân phối. Chúng tôi không có danh sách tất cả các thiết bị di động để sử dụng tiêu đề tác nhân người dùng rất khó khăn vì chúng tôi có thể bỏ lỡ điều gì đó.

Chúng tôi đã nghĩ về việc sử dụng chiều rộng màn hình thiết bị - nhưng điều gì sẽ xảy ra nếu thiết bị di động không hỗ trợ javascript. Làm thế nào để chúng ta đánh hơi cái này?

Trả lời

24

Bạn có thể sử dụng cơ sở dữ liệu mô tả thiết bị (chẳng hạn như WURFL) sẽ nhận dạng thiết bị khách từ các tiêu đề yêu cầu. Sau đó, bạn có thể truy vấn cơ sở dữ liệu đó để quyết định xem thiết bị có thể xử lý trang web của bạn (ví dụ: hỗ trợ javascript hoặc màn hình đủ lớn) trước khi quyết định có chuyển hướng chúng đến một trang web khác không.

Bạn không đề cập đến môi trường của mình, nhưng WURFL cung cấp API cho Java và PHP và cũng có thể là các API khác. Nếu không có API được cung cấp, bạn vẫn có thể sử dụng WURFL, nhưng bạn sẽ phải phân tích và tự xử lý dữ liệu XML.

+2

Không biết cái mũ la cái gì tồn tại. Tốt hơn nhiều so với giải pháp của tôi –

2

Tôi không nghĩ rằng có một cách tốt/thanh lịch để phát hiện nếu người dùng đã kích hoạt javascript của mình.

IMO, tốt nhất là liệt kê tác nhân người dùng: here là danh sách Tác nhân người dùng, có vẻ khá hoàn chỉnh (bằng tiếng Pháp, thật đáng buồn).

+0

http://www.user-agents.org/ – abatishchev

0

Đồng ý với Skaffman, một cơ sở dữ liệu thiết bị khác là DeviceAtlas. Bạn phải trả tiền cho điều này mặc dù.

0

đơn giản:

<link rel="alternate" media="handheld" href="WEBSITE HERE"> 

đưa rằng trong phần đầu.

+0

-1 iPhone/iPod Touch và các điện thoại thông minh khác, không tôn trọng loại phương tiện 'cầm tay'. Họ muốn hiển thị phiên bản thông thường của trang web: có nghĩa là bạn cần một số cơ chế * khác * để phát hiện trình duyệt trên thiết bị di động. –

+1

Đây không phải là phương pháp phát hiện, đây là cách để nói với trình duyệt nơi tìm trang web trên thiết bị di động. – JKirchartz

+1

Nhưng nó chắc chắn sẽ tốt đẹp, IMO, nếu các trình duyệt di động tiêu chuẩn hóa việc đánh dấu đánh dấu như thế này bằng cách, hiển thị hộp thoại hỏi xem người dùng có muốn phiên bản di động của trang web và đề nghị nhớ lựa chọn đó không. – dbreaux

8

media = "handheld" không hoạt động với điện thoại thông minh hiện đại như iphone giả vờ là trình duyệt dành cho máy tính để bàn (sử dụng loại phương tiện màn hình).

http://detectmobilebrowser.com/ miễn phí & mã nguồn mở, có một kiểm tra toàn diện mobile user-agent có sẵn trong nhiều ngôn ngữ - javascript, php, asp.net, ruby ​​vv

+0

Nó không phải là xấu cho SEO vì nó chuyển hướng đến detectmobilebrowser.com đầu tiên? –

+2

Thực ra bạn phải thay đổi phần mã đó để nó đọc * firecoding.com * thay thế ;-) – JoshuaDavid

+0

@FireCoding là nhận xét lén lút nhất mà tôi từng thấy :) –

0

Nếu thiết bị không hỗ trợ JS, đó là tốt hơn để xem xét giải pháp phía Máy chủ và WURFL API có thể giúp hướng tới đó. Đôi khi chúng tôi muốn tránh vấn đề với cách tiếp cận này (ví dụ như proxy ngược lại lưu trữ các trang và không cho phép chuyển hướng đến phiên bản di động) hoặc chúng tôi cần một giải pháp nhanh chóng biết rằng hiện nay hầu như tất cả các thiết bị gần đây đều hỗ trợ JS. Vì lý do này, tôi đã viết một tập lệnh JS có tên là "redirection_mobile.js" để phát hiện Tác nhân người dùng của trình duyệt và chuyển hướng đến phiên bản di động của trang web của bạn nếu bạn đang truy cập nó từ thiết bị di động.

Trong một số trường hợp bạn muốn chuyển hướng từ thiết bị di động sang phiên bản máy tính để bàn (như với liên kết "Truy cập trang web chính"), tập lệnh sẽ xử lý và sau khi bạn kết thúc phiên, bạn sẽ truy cập phiên bản di động một lần nữa.

Bạn có thể tìm mã nguồn trên github đây http://github.com/sebarmeli/JS-Redirection-Mobile-Site và bạn có thể đọc thêm chi tiết tại một trong những bài viết của tôi ở đây:

http://blog.sebarmeli.com/2010/11/02/how-to-redirect-your-site-to-a-mobile-version-through-javascript/

3

Chỉ cần đặt này trong tiêu đề của bạn:

<script type="text/javascript"> 
<!-- 
    if (screen.width <= 700) { 
    window.location = "http://www.mobile-site.com"; 
    } 
//--> 
</script> 

Chỉ cần về màn hình máy tính của tất cả mọi người là ở trên vòng của 700px nhưng vaule này có thể được thay đổi. Không có điện thoại hoặc máy tính bảng nào ở trên 700px (ít nhất là tôi không biết bất kỳ loại nào) vì vậy tất cả các thiết bị di động sẽ chuyển hướng đến trang web trên thiết bị di động của bạn.

+1

iPad thông thường có độ phân giải 1024x768, ipad retina là gấp đôi. Vì vậy, tôi sẽ cảnh giác với việc dựa vào điều này. – anyeone

+0

Và tính đến năm 2015, câu trả lời này đã lỗi thời. – Martijn

2

Một thay thế cho WURFLMobile Detect, một lớp học PHP để phát hiện:

  • Tablet
  • Mobile
  • iOs
  • Android
  • trình duyệt
  • Và nhiều hơn nữa

Vì vậy, trong trường hợp WURFL không thực hiện những gì bạn cần, bạn luôn có thể kiểm tra điều này.

5

Nếu bạn đang tìm cách chuyển hướng đến trang web dành cho thiết bị di động sử dụng JavaScript, tôi nhận thấy rằng WURFL cũng có giải pháp cho phép bạn thực hiện phát hiện phía máy chủ với JavaScript.

<script type='text/javascript' src="//wurfl.io/wurfl.js"></script> 

bạn sẽ bị bỏ lại với một đối tượng JSON trông giống như:

{ 
    "complete_device_name":"Apple iPhone 6", 
    "is_mobile":true, 
    "form_factor":"Smartphone" 
} 

Bạn có thể sau đó sử dụng này:

if (WURFL.is_mobile === true) { 
    window.location.replace("http://stackoverflow.com"); 
} 
Các vấn đề liên quan