我有两个ASP.NET页面,页面A和页面B。点击页面A上的链接后,用户将被重定向到页面B。当用户在页面B时,如果单击浏览器的返回按钮,我需要强制调用页面A的刷新。如何实现此功能?注意:代码需要兼容不同的浏览器...例如IE、Firefox、Opera等。
我认为Javascript无法判断是第一次访问还是从后退按钮返回。因此,我将需要更新的页面部分放在UpdatePanel中,然后使用JavaScript在每次页面加载时始终刷新这些部分。虽然不太优雅,但它解决了我的问题。
function addLoad(fn) {
if (window.addEventListener) {
window.addEventListener("load", fn, false);
return true;
} else if (window.attachEvent) {
var r = window.attachEvent("onload", fn);
return r;
} else {
return false;
}
}
function refreshBack()
{
__doPostBack("<%= updatePanel1.ClientID %>", "");
__doPostBack("<%= updatePanel2.ClientID %>", "");
}
addLoad(refreshBack);
有一些按钮属性,比如Autopostback,你可以尝试一下看看是否有帮助!
protected override void OnInit(EventArgs e)
{
//Refresh page on back button
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.SetNoStore();
Response.Cache.SetExpires(DateTime.MinValue);
base.OnInit(e);
}
<% Page.Response.Expires = 0; %>
if (cookie does not exist)
set cookie with 10 second expiration
else if cookie exists {
is cookie expired? {
set new cookie
refresh page
}
}
function SetCookie (name, value) {
var argv=SetCookie.arguments;
var argc=SetCookie.arguments.length;
var expires=(argc > 2) ? argv[2] : null;
var path=(argc > 3) ? argv[3] : null;
var domain=(argc > 4) ? argv[4] : null;
var secure=(argc > 5) ? argv[5] : false;
document.cookie=name+"="+escape(value)+
((expires==null) ? "" : ("; expires="+expires.toGMTString()))+
((path==null) ? "" : ("; path="+path))+
((domain==null) ? "" : ("; domain="+domain))+
((secure==true) ? "; secure" : "");
}
function getCookie(c_name)
{
var c_value = document.cookie;
var c_start = c_value.indexOf(" " + c_name + "=");
if (c_start == -1)
{
c_start = c_value.indexOf(c_name + "=");
}
if (c_start == -1)
{
c_value = null;
}
else
{
c_start = c_value.indexOf("=", c_start) + 1;
var c_end = c_value.indexOf(";", c_start);
if (c_end == -1)
{
c_end = c_value.length;
}
c_value = unescape(c_value.substring(c_start,c_end));
}
return c_value;
}
if (getCookie('first_load'))
{
if (getCookie('first_load')==true)
{
window.location.reload(true); // force refresh page-liste
SetCookie("first_load",false);
}
}
SetCookie("first_load",true);