2010-11-15 35 views
5

Tôi có một tập lệnh phát hiện xem bạn có phải là người dùng iPhone hay không và chuyển hướng đến một trang thân thiện với iPhone hơn.Xem toàn bộ trang web, chứ không phải phiên bản di động trên iPhone

<script type="text/javascript"> 
    if((navigator.userAgent.match(/iPhone/i)) || (navigator.userAgent.match(/iPod/i))) 
    { 
     location.replace("http://domain.com/iphone/"); 
    } 
</script> 

Điều này thật tuyệt vời nhưng có một vấn đề. Quy ước cung cấp cho người dùng khả năng xem trang web đầy đủ đầy đủ. Tuy nhiên, nếu tôi liên kết với thư mục gốc, rõ ràng là chuyển hướng sẽ gửi chúng tới phiên bản di động!

Bất kỳ ý tưởng nào về cách bao gồm nếu nhấp vào liên kết từ /iphone/, họ có thể truy cập / và ở lại đó.

Trả lời

0

Chuỗi truy vấn là cách để đi (như những người khác đã nói ở trên). Nhìn vào Facebook, nếu bạn nhấp vào liên kết 'full site' trên trang web di động, nó sẽ chuyển hướng đến www.facebook.com/login.php?m2w - m2w có lẽ là MobileToWeb và điều này sẽ ngăn trang web chuyển hướng người dùng đến Trang di động.

+0

Có, Lưu ý. Tuy nhiên, vấn đề là tất cả các neo khác sẽ được liên kết với href = "/". Vì vậy, một chuỗi truy vấn để duy trì trạng thái sẽ không hoạt động trừ khi cookie được sử dụng. Nó có thể hoạt động theo yêu cầu đầu tiên, nhưng không phải khi người dùng duyệt đến một trang khác, sau đó nhấp vào trang chủ. Chúng sẽ được nhắc lại chuyển sang trang web dành cho thiết bị di động. – Rya

8

Khi người dùng đến, hãy xác định loại trình duyệt của họ - di động hoặc đầy đủ - và đặt cookie với giá trị này. Sử dụng giá trị cookie này để quyết định phiên bản nào của trang web sẽ hiển thị. Như bạn đề cập, cung cấp liên kết đến trang web "đầy đủ" cho người dùng di động, nhưng nếu họ nhấp vào, hãy chạy tập lệnh nhanh để cập nhật cookie thành giá trị "đầy đủ" rồi chuyển hướng đến trang web đầy đủ. Cookie của họ hiện được đặt cho trang web đầy đủ, vì vậy, chúng sẽ không bị trả về trang web dành cho thiết bị di động. Bây giờ, nếu cookie là một vấn đề, bạn có thể sử dụng một cái gì đó như PHP để đặt một giá trị phiên để duy trì trạng thái đầy đủ/di động của phiên, nhưng đó có thể vượt quá phạm vi của câu hỏi ban đầu.

+0

Bạn có thể thực hiện việc này mà không cần tập lệnh trung gian, bằng chuỗi truy vấn như "i-want-to-use-the-main-site = 1" (rõ ràng là ít phức tạp hơn XD), đặt cookie nếu chuỗi truy vấn ở đó và chuyển hướng nếu không có cookie hoặc chuỗi truy vấn. –

+0

và nếu họ đã tắt cookie, bạn chỉ có thể đặt cookie trong chuỗi truy vấn: '? PreventMobileRedirect = true' hoặc một cái gì đó – Joel

+0

@Kolink: Điều này đúng. Tôi đã suy nghĩ trong PHP, không phải JavaScript, nhưng nó hoạt động theo một trong hai cách. Tôi sẽ sửa đổi câu trả lời mặc dù, đó là nhiều hơn trong tinh thần của câu hỏi ban đầu. –

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