2010-11-15 81 views
5

我有一個腳本可以檢測您是否是iPhone用戶,並將其重定向到更友善的iPhone頁面。在iPhone上查看完整網站,而不是移動版本

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

這很好,但有一個問題。按照約定爲用戶提供查看完整網頁的能力。但是,如果我鏈接到根,顯然重定向將發送到移動版本!

如果點擊從/iphone/鏈接的任何想法,他們可以去/並留在那裏。

回答

0

查詢字符串是要走的路(正如其他人所說的)。查看Facebook,如果您點擊移動網站上的「完整網站」鏈接,它會重定向到www.facebook.com/login.php?m2w - m2w可能是MobileToWeb,這將阻止網站將用戶重定向到移動網站。

+0

是的,已注意。但是,問題是所有其他錨都將鏈接到href =「/」。所以,除非使用cookie,否則維護狀態的查詢字符串不會起作用。它可以在第一個請求上工作,但不是當用戶瀏覽另一個頁面時,然後單擊回家。他們會被提示再次轉移到移動網站。 – Rya 2010-11-19 04:54:31

8

當用戶到達時,確定他們的瀏覽器類型 - 移動或全部 - 並設置一個具有該值的cookie。使用此cookie值來決定要顯示的網站的版本。如您所述,爲移動用戶提供「完整」網站的鏈接,但如果他們點擊該鏈接,請運行快速腳本將cookie更新爲「完整」值,然後將其重定向到完整網站。他們的cookie現在設置爲整個網站,所以他們不會被彈回移動網站。

現在,如果cookie是一個問題,您可以使用類似PHP的設置會話值來保持會話的完整/移動狀態,但這可能超出了原始問題的範圍。

+0

你可以在不使用中間腳本的情況下做到這一點,通過查詢字符串如「我想使用主站點= 1」(顯然不如XD那麼複雜)來設置cookie查詢字符串在那裏,如果cookie或查詢字符串都不存在,則重定向。 – 2010-11-15 04:51:42

+0

,如果它們關閉了cookie,你可以將它設置在查詢字符串中:'?preventMobileRedirect = true'或者其他東西 – Joel 2010-11-15 04:52:27

+0

@Kolink:這是真的。我在PHP中思考,而不是JavaScript,但它可以用任何方式。儘管如此,我會修改答案,這更符合原始問題的精神。 – 2010-11-15 04:53:29

相關問題