2011-09-21 67 views
-1

我們在使用Javascript獲取document.referrer網址時遇到問題。我們有一家商店,我們希望阻止人們從我們的購物車前往特定頁面。這意味着如果他們從購物車中移出,點擊瀏覽器上的後退按鈕以及購物車是特定網址之前的頁面,則需要跳過該網址,我們需要重定向到其他頁面。 如果推薦網址是購物車,我們希望指定產品/網頁的網址跳過。Javascript如果document.referrer重定向到另一個網址

我試過這樣做,但似乎不工作。似乎在每個頁面上都會觸發,不僅僅是。我已經在我們的Root.master頁面的頭部。這是我的代碼。

$(document).ready(function() { 

    var pathname = window.location.pathname; 
    if (pathname = "http://www.mywebstore.com/Page-we-want-to-skip-over.aspx") { 
    if (document.referrer = "http://www.mywebstore.com/ShoppingCart.aspx") { 
     window.location = 'http://www.mywebstore.com/Page-we-want-to-go-to-instead.aspx' 
    } 
    } 

});

或者我們想跳過2頁。所以我們也嘗試了這一點,但它仍然會在每一頁上觸發,而不僅僅是我們想阻止後退按鈕操作的頁面。

$(document).ready(function() { 

     var pathname = window.location.pathname; 
     if (pathname = "http://www.mywebstore.com/Page-we-want-to-skip-over.aspx") { 
     if (document.referrer = "http://www.mywebstore.com/ShoppingCart.aspx") { 
      window.history.back(-2); 
     } 
     } 
    }); 

這兩個解決方案看起來都是正確的,但它們不起作用。 任何幫助,不勝感激。

在此先感謝。

+1

這看起來像是試圖隱藏糟糕的設計。此外,JS不會爲JS關閉的用戶或某些類型瀏覽器中的用戶解決問題。 – Paul

回答

3

您正在使用賦值而不是相等

在您的測試中更改爲==。

+0

哪部分應該有==? if(pathname == ...)之後或document.referrer之後或兩者皆有 – ClosDesign

+0

是的,在兩個if()塊中,您不需要使用單個= –

0

另外,window.location.pathname不包含域。因此,它應該是:

if (pathname == "/Page-we-want-to-skip-over.aspx") 

MDC documentationwindow.location

您還應該記住,引用者是不可靠的。一些瀏覽器或防火牆會阻止它,並且它可能被僞造。

+0

什麼是referrer的替代方案? – ClosDesign

+1

您可以使用會話(在Web服務器上)來跟蹤用戶的頁面訪問。 – James

2

使用後退按鈕不會以您想要的方式更改引用者。例如頁面序列,例如:

A -> B -> C (backbutton) -> B 

當用戶來「背」不發送「C」作爲引薦到網頁B的引薦將頁面A.查閱情況是爲「前進」的行動只設置,不'回'行動。

+0

是否有另一種方法獲得頁面C,如果按下後退按鈕則通過B? – ClosDesign

+0

不是。你必須引入使用'location.replace'的pure-javascript導航,像許多網上銀行網站那樣有效地禁用後退按鈕。瀏覽器中的歷史記錄對象嚴重鎖定,不會讓一個頁面查看其他頁面生成的歷史記錄,即使這兩個頁面都是您的並且來自同一臺服務器。 –

+0

感謝您的信息。這對我們的問題確實有幫助。有點糟糕,但如果這是它的工作方式。我們不能做太多事情。 – ClosDesign

相關問題