2013-04-26 148 views
0

我使用的是我見過的典型的移動網站重定向腳本,它效果很好。我的移動網站上還有一個鏈接,可以讓他們在需要時查看常規網站,而且這種方式也可以。每次重定向到移動網站

這裏是我的場景&的問題。他們去我的手機網站,然後點擊鏈接進入常規網站。然後他們去訪問一個完全不同的網站。如果他們再次鍵入我的網址去我的網站,它會將他們帶到常規網站而不是移動網站。每個單獨的時間他們去我的網站我希望他們被帶到手機。誰能更好地幫助我?謝謝!

這裏是我的腳本正規的網站上:

<script type="text/javascript"> 
    if (document.location.search.indexOf("skipmobile") >= 0) { 
     document.cookie = "skipmobile=1"; 
    } else if ((document.location.hostname.match(/\.mobi$/) || screen.width < 699) && document.cookie.indexOf("skipmobile") == -1) { 
     document.location = "m/"; 
} 

下面是從我的移動網站的鏈接:

<a href="http://www.mywebsite.com/index.html?skipmobile=1">View Full Website</a> 
+0

是否允許他們進入正規的網站在瀏覽器關閉後?或者只是當他們在一個瀏覽器會話? – 2013-04-26 13:40:18

+0

即使在瀏覽器關閉之後。如果我打開一個新窗口,我仍然會被帶到常規網站。 – 2013-04-26 13:55:56

+0

啊,那是因爲cookie。您最好將「skipmobile」作爲會話存儲。會話將在關閉瀏覽器時被終止。 – 2013-04-26 13:57:59

回答

0

讓我們來細數你的JavaScript代碼。

if (document.location.search.indexOf("skipmobile") >= 0) { 

如果URL包含字符串「skipmobile」,則條件>= 0爲true。注意它的值設置並不重要。它只是尋找字符串「skipmobile」的存在。當該字符串在URL中時,cookie將被設置爲document.cookie = "skipmobile=1"。如果找不到字符串,indexOf將返回一個-1

else if ((document.location.hostname.match(/\.mobi$/) || screen.width < 699) && document.cookie.indexOf("skipmobile") == -1) 

讓我們把它分解成幾塊。首先,||表示OR,而&&表示AND。因此,if document.location.hostname.match(/\.mobi$/)正在使用正則表達式從最後的字符串「.mobi」的URL中搜索主機名。所以www.yoursite.mobi會匹配,但www.yoursite.com不會。那麼我們有OR條件|| screen.width < 699。因此,如果主機名以「.mobi」結尾,或者屏幕尺寸的寬度小於「699」像素,則此情況的第一部分將爲真。

此if語句的下一部分是document.cookie.indexOf("skipmobile") == -1。這是檢查名爲「skipmobile」的cookie的不存在。請注意0​​。所以它正在檢查cookie沒有被設置。

所以把所有的一起,如果主機在結束「的.mobi」 OR屏幕寬度小於‘699’像素餅乾‘skipmobile’尚未設置然後直接將瀏覽器移動網站「m /」,使用此代碼document.location = "m/"

它看起來像代碼正在檢查的cookie來確定手機或完整的網站。因此,當他們離開並回到您的網站時,它會「記住」設置。

0

設置您的cookie時 - 特別是不要設置過期日期。這通常被稱爲「會話cookie」。當瀏覽器關閉時,Cookie將自動失效。

或更好,但...

很簡單,只是不設置一個cookie的。我沒有看到代碼中實際存在的cookie執行任何操作的任何地方......只有cookie沒有問題。此外,如果您沒有設置Cookie,則永遠不會有cookie。爲什麼浪費代碼尋找它?

試試這個...

<script type="text/javascript"> 
if (document.location.search.indexOf("skipmobile") >= 0) 
{ 
document.location = "m/"; 
} else if ((document.location.hostname.match(/\.mobi$/) || screen.width < 699)) 
{ 
document.location = "m/"; 
} 
</script>