繁体   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