2011-08-11 34 views
8
  1. 用戶訪問頁面A並點擊幾次,調整頁面狀態,因爲他/她去。
  2. 頁A最終用戶重定向到網頁B
  3. 用戶點擊瀏覽器的後退按鈕,看到網頁A又在瀏覽器

我需要執行的步驟3如何通過瀏覽器後退按鈕處理用戶到達頁面?

如何某些接口清理在頁面A中捕獲這個事件?

+2

這裏是一個類似的帖子,涵蓋了使用jQuery和後退按鈕:http://stackoverflow.com/questions/158319/cross-browser-onload-event-and-the-back-button –

回答

1

除了可能設置cookie之外,您不能因瀏覽器安全限制。解決方法是檢查用戶是否通過onbeforeunload或onunload fire離開頁面。

1

在您的場景中是否可以使用URL散列導航到頁面B並使用AJAX和jQuery加載新頁面?因此,瀏覽器實際上並未離開頁面。當用戶返回時,他們所要做的就是改變URL哈希值。然後,您可以捕捉到hashchange事件,看看用戶是否導航回到頁A.

+0

康奈爾,我喜歡這個想法,但我認爲我們的網絡應用程序對於這種方法來說太重了。它是DotNetNuke內的一個電子商務應用程序,使用ASP.NET Web Forms –

+0

啊,總是值得推薦!您是否在@Rionmonster建議的帖子中嘗試過接受的答案? – Connell

+0

還沒有,需要一些時間來分析。它看起來很有希望 –

1

我要做出一些假設提出一個辦法做到這一點,是不是JavaScript的完全依賴:

  1. 您在評論中注意到另一個答案,這是一個ASP.NET應用程序。我假設你只關心後退按鈕,它在ASP.NET應用程序的另一個頁面上被按下。
  2. 您可以控制ASP.NET代碼中執行的服務器端代碼,以查找有問題的頁面和需要「退出」的頁面。

如果這兩個條件都是真的,那麼你應該可以使用Session variable!只需將當前頁面設置爲由所有相關頁面上的會話維護的currPage變量即可。然後,當頁面加載時,請檢查並使用它來調整頁面直接顯示的方式,或者將值寫入隱藏字段/ input/div,您的javascript可以讀取並使用它來做出適當的反應。

如果您使用JS讀取和執行路線,您需要進行測試以確保事件在從後臺加載按鈕後在所有瀏覽器上正確觸發。如the link from Rionmonster中所述,有時在後退按鈕後,onload事件可能不會觸發。如果你從中看到問題,那麼使用那裏提到的技巧來解決它。

這種類型的解決方案應該適用於任何web應用程序,其使用能夠與會話變量相互作用的服務器端代碼(例如,它也會爲PHP,Python和許多其他工作)。

注意:這有可能不會像它聽起來那麼優雅。在很多情況下,按下後退按鈕後,瀏覽器實際上可能不會從服務器拉出新頁面。如果測試顯示這是一個問題,那麼您可能需要使用一些AJAX技術在後按鈕按下後填充JS新鮮的信息。

相關問題