2013-06-19 31 views
3

這裏的情況:有沒有辦法在登陸我的頁面之前找出訪問者的先前URL?

我用從(點A)轉發用戶現場工作,到移動版本(SITE B),像這樣:

<script type="text/javascript"> 
$(document).ready(function(){ 
if($(window).width() < 480){ 
window.location = "http://mysite.com/mobile-version" 
} 
}); 
</script> 

問題是,我們仍然需要爲用戶提供從(站點B)返回(站點A)的選項,但是當腳本到位時,它將在用戶請求(站點A)並返回(站點B)時再次運行腳本。

IF/ELSE語句能否拉出用戶最後一次訪問的頁面/網站並說好...您正在(站點B)訪問(站點A),因此不需要重新指定?

+2

創建服務器端用戶會話將是最簡單的方法 – brendosthoughts

+2

window.location = document.referrer; – dandavis

回答

3

您正在查找的DOM屬性是document.referrer

它返回一個字符串,其中包含用戶在進入此頁面之前所處的頁面。即

var prevPage = document.referrer; 
if (!prevPage.match(/*SITE A*/)){ 
//Do Something 
} 
+0

這工作就像一個魅力!感謝您的幫助! –

1

一個服務器端的會話將最完整的跨瀏覽器的支持,但如果你想這樣做在客戶端就可以使用HTML 5的localStorage如果同時在移動和桌面版網站,都在同一個域。

在移動網站上,當用戶點擊顯示桌面網站,存儲在localStorage的值:

// user wants to go to desktop site 
localStorage.setItem("no-mobile-redirect", true); 
window.location = 'http://desktopsite'; 

在桌面網站:

$(document).ready(function(){ 
    if($(window).width() < 480){ 
     var localVar = localStorage.getItem("no-mobile-redirect"); 

     if(!localVar){ // only redirect if the no-mobile-redirect is not TRUE 
      window.location = "http://mysite.com/mobile-version" 
     } 
    } 
}); 
+0

感謝您提交此回覆。我沒有意識到,但肯定會考慮到LocalStorage。 –

1

Racheet的答案是正確的,因爲儘管如此,但依靠這一點並不安全。一些Web瀏覽器可以配置爲不出於隱私原因發送REFERER頭,並且一些防火牆/路由器也會這樣做。

最好的辦法是,如果查詢字符串(或表單)參數不存在,則只能執行重定向。例如:

其他替代方案可能涉及使用cookie或localstorage,但同樣需要考慮用戶的客戶端不支持這些功能或關閉它們的可能性。

0

只是提供另一種解決方案。 http://mysite.com?rd=false

$(document).ready(function() { 
    if (window.location.indexOf("rd=false" != -1) return; 
    if($(window).width() < 480){ 
    window.location = "http://mysite.com/mobile-version" 
    } 
}); 

來想一想:重定向到桌面時,在URL 使用一個參數一個cookie會更實用......

相關問題