簡體   English   中英

瀏覽器后退按鈕問題

[英]Browser Back Button issue

誰能幫助我解決瀏覽器后退按鈕問題? 當用戶從瀏覽器歷史記錄列表中選擇任何頁面時,我想執行一些服務器端處理。 例如,當您從應用程序注銷時,以及當您單擊后退按鈕時,我不想顯示他已訪問的上一頁。 在我的項目中,我還有其他一些頁面,需要刷新動作才能使頁面保持一致狀態。

為了解決這個問題,我嘗試從代碼中添加cookie,並將cookie值設置為false。 使用Javascript,我正在檢查Cookie值。 如果為假,則不執行其他操作重新加載頁面。 之后,我將該cookie更改為true。但是當我更改cookie值時,我想更新現有的cookie,但它正在插入新的cookie。

這是修改我正在使用的cookie的腳本

document.cookie= c_name+ "=" + c_value;
               //c_name- CookieName ; c_value-Cookie value;

這是正確的解決方案嗎? 還是有更好的解決方案?

提前致謝。

希望我能正確理解您的問題。 您實際上是在嘗試禁用“后退”按鈕緩存頁面嗎?

如果是這樣,您需要添加以下http標頭,以使瀏覽器不會緩存該頁面。

Cache-Control: no-cache, max-age=0, must-revalidate, no-store

另外,關於處理網站登錄,我想您可能想考慮使用會話而不是Cookies。 您只需在服務器上創建一些會話變量,即可用於存儲用戶ID,活動會話ID等,並且在頁面加載時,您可以檢查該會話值並查看其是否有效,以便決定哪種類型頁面內容的數量需要在客戶端顯示。

首先感謝您的幫助。

終於我得到了解決方案。 這是簡單的解決方案

首先,重寫頁面的render方法,並在其中寫入以下代碼。

//插入Cookie以避免Borwser后退按鈕問題

if (Request.Cookies["loadedFromServer"] != null)
Response.Cookies.Set(Request.Cookies["loadedFromServer"]);
else
Response.Cookies.Set(new HttpCookie("loadedFromServer", ""));

Response.Cookies["loadedFromServer"].Value = "true";

並在母版頁中編寫以下腳本。

function ClearCookie() {
var CACHE_COOKIE = 'loadedFromServer';
var loadedFromServer = getCookie(CACHE_COOKIE) == 'true';
if (loadedFromServer.toString() == "false") {
location.reload();
}
document.cookie = CACHE_COOKIE + '=' + getCookie(CACHE_COOKIE) + '; expires=Thu, 01 Jan                            1970 00:00:01 UTC; path=/;';
}

function getCookie(c_name) {
var i, x, y, ARRcookies = document.cookie.split(";");
for (i = 0; i < ARRcookies.length; i++) {
x = (ARRcookies[i].substr(0, ARRcookies[i].indexOf("="))).trim();
y = (ARRcookies[i].substr(ARRcookies[i].indexOf("=") + 1)).trim();
x = x.replace(/^\s+|\s+$/g, "");
 if (x == c_name) {
return unescape(y);
}
}
 }

並每次在母版頁中調用該函數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM