怎样实现点击浏览器的返回按钮回到页面时刷新该页面?

时间:2022-09-16 12:25:26
如题:怎样实现点击浏览器的返回按钮回到页面时刷新该页面?
第一次进入某页面 和 通过返回按钮回到某页面 有什么区别?
我怎么在js脚本中判断页面是第一次加载还是返回的?

19 个解决方案

#1


后退按钮是history缓存的,不会刷新.

#2


对,我就是想让它刷新,让显示的永远是从服务器更新的页面,而不是缓存的页面,哪怕是点后退按钮

#3


window.location.href =

#4


你可以设置禁止缓存,这样后退之后就看不到页面,手动刷新才可以.
什么都不设置点后退基本上只能是缓存了。

#5


把后退的代码改写下!

#6


如果这样
<head>
<script language="javascript">
function func(){
//判断是否是后退到该页面的   if(是后退)
window.document.location.reload();
}
</script>
</head>
<body onload="func()">
</body>
页面就刷新个没完没了,我想加个判断,但不知道条件是什么

#7


引用 5 楼 chinmo 的回复:
把后退的代码改写下!

请问后退的代码怎么改写?

#8


window.location.href =xxx

#9


window.location.href =
放在哪里呢?放在body的onload中不行的,会造成循环提交页面

#10


呵呵,给你一点提示,不知道你能领会到我的意思没
你当前页和你使用history.go(-1)返回的那一页,是属于子父页

这是一种提示

还有后退按钮用这个window.location.href = 改变下链接方法

opener.location.reload(); 


也可以window.opener.location.href   =   window.opener.location.href

这样的返回发代码你自己看着用

#11


以上代码都得放在当前页,而不是你要返回的那一页

#12


谢谢各位热情帮助,但是我又失败了
a.htm页面
<html>
<head>
<title>
</title>
</head>
<body >
<br />
<a href="b.htm">b.htm</a>
<input type="text" name="text1"/>
</body>
</html>

b.htm页面
<html>
<head>
<title>
</title>
<script language="javascript" type="text/javascript">
function goback(){
//window.history.go(-1);//正常返回,a.htm不刷新

//window.opener.location.reload();// 只有当该页面为新窗口时有效,即<a href="b.htm" target="_blank">b.htm</a>
//window.opener.location.href   =   window.opener.location.href ;//同上

//window.parent.location.reload();//框架页中有效

//document.parentWindow.location.reload();//刷新的是自己

window.location.href ="a.htm"//刷新了a.htm,但是是链接到a.htm
}
</script>
</head>
<body>

<br />
<a href="javascript:goback();">go back</a>
<br />
<a href="a.htm">go back</a>
</body>
</html>
上面即使能刷新,也是通过重新链接实现的

我想实现点击浏览器上的后退按钮时刷新a.htm页面,无论a.htm是连接到sohu还是163又返回到a.htm,
仅仅点了浏览器上的后退按钮返回到a.htm
所以我想我的刷新操作只能在a.htm中完成
<head>
<script language="javascript">
function func(){
//我想在这里判断是否是从服务器传来的页面,如果不是,就执行
//window.document.location.reload();
}
</script>
</head>
<body onload="func()">
</body> 

如果页面被保存为本地文件,然后在本地执行该页面,该页面还是要从服务器去取数据。

不知道我有没有说清楚

#13


晕,大哥,你是想用浏览器的后退啊???

#14


因为你的想法在目前的浏览器里基本是无法实现。

#15


只有一个办法了
就是禁止缓存

<% 

Response.Buffer = True 

Response.ExpiresAbsolute = Now() - 1 

Response.Expires = 0 

Response.CacheControl = "no-cache" 

%> 
这种方法非常有效!它强制浏览器重新访问服务器下载页面,而不是从缓存读取页面。使用这种方法时,编程者的主要任务是创建一个会话级的变量,通过这个变量确定用户是否仍旧可以查看那个不适合通过后退按钮访问的页面。由于浏览器不再缓存这个页面,当用户点击后退按钮时浏览器将重新下载该页面,此时程序就可以检查那个会话变量,看看是否应该允许用户打开这个页面。

#16


你也可以使用<html> 

<head> 

<meta http-equiv="Expires" CONTENT="0"> 

<meta http-equiv="Cache-Control" CONTENT="no-cache"> 

<meta http-equiv="Pragma" CONTENT="no-cache"> 

</head> 

客户端的禁止缓存 

#17


<A HREF="1.htm" onclick="javascript:location.replace(this.href);event.returnValue=false; ">aaaaa</A> 
<script language="JavaScript"> 

<!-- 

javascript:window.history.forward(1); 

//--> 

</script> 

这些都可以
但是这些都有缺点

#18


感谢chinmo,问题终于解决了。

只是有一点迷惑的是
使用这一段
Response.Buffer = True
Response.Expires = 0
Response.CacheControl = "no-cache"
是可行的,页面不会缓存。

但是我直接使用生成的html代码段
<meta http-equiv="Expires" CONTENT="0">  
<meta http-equiv="Cache-Control" CONTENT="no-cache">  
<meta http-equiv="Pragma" CONTENT="no-cache"> 
时却不能禁止缓存,
两种方式的HTML源码是完全一样的,真是奇怪

#19


<%

Response.Buffer = True

Response.ExpiresAbsolute = Now() - 1

Response.Expires = 0

Response.CacheControl = "no-cache"

%> 
虚心请教:上面这个到底怎么实现的呢?控制程序是什么样的?非常感谢!

#1


后退按钮是history缓存的,不会刷新.

#2


对,我就是想让它刷新,让显示的永远是从服务器更新的页面,而不是缓存的页面,哪怕是点后退按钮

#3


window.location.href =

#4


你可以设置禁止缓存,这样后退之后就看不到页面,手动刷新才可以.
什么都不设置点后退基本上只能是缓存了。

#5


把后退的代码改写下!

#6


如果这样
<head>
<script language="javascript">
function func(){
//判断是否是后退到该页面的   if(是后退)
window.document.location.reload();
}
</script>
</head>
<body onload="func()">
</body>
页面就刷新个没完没了,我想加个判断,但不知道条件是什么

#7


引用 5 楼 chinmo 的回复:
把后退的代码改写下!

请问后退的代码怎么改写?

#8


window.location.href =xxx

#9


window.location.href =
放在哪里呢?放在body的onload中不行的,会造成循环提交页面

#10


呵呵,给你一点提示,不知道你能领会到我的意思没
你当前页和你使用history.go(-1)返回的那一页,是属于子父页

这是一种提示

还有后退按钮用这个window.location.href = 改变下链接方法

opener.location.reload(); 


也可以window.opener.location.href   =   window.opener.location.href

这样的返回发代码你自己看着用

#11


以上代码都得放在当前页,而不是你要返回的那一页

#12


谢谢各位热情帮助,但是我又失败了
a.htm页面
<html>
<head>
<title>
</title>
</head>
<body >
<br />
<a href="b.htm">b.htm</a>
<input type="text" name="text1"/>
</body>
</html>

b.htm页面
<html>
<head>
<title>
</title>
<script language="javascript" type="text/javascript">
function goback(){
//window.history.go(-1);//正常返回,a.htm不刷新

//window.opener.location.reload();// 只有当该页面为新窗口时有效,即<a href="b.htm" target="_blank">b.htm</a>
//window.opener.location.href   =   window.opener.location.href ;//同上

//window.parent.location.reload();//框架页中有效

//document.parentWindow.location.reload();//刷新的是自己

window.location.href ="a.htm"//刷新了a.htm,但是是链接到a.htm
}
</script>
</head>
<body>

<br />
<a href="javascript:goback();">go back</a>
<br />
<a href="a.htm">go back</a>
</body>
</html>
上面即使能刷新,也是通过重新链接实现的

我想实现点击浏览器上的后退按钮时刷新a.htm页面,无论a.htm是连接到sohu还是163又返回到a.htm,
仅仅点了浏览器上的后退按钮返回到a.htm
所以我想我的刷新操作只能在a.htm中完成
<head>
<script language="javascript">
function func(){
//我想在这里判断是否是从服务器传来的页面,如果不是,就执行
//window.document.location.reload();
}
</script>
</head>
<body onload="func()">
</body> 

如果页面被保存为本地文件,然后在本地执行该页面,该页面还是要从服务器去取数据。

不知道我有没有说清楚

#13


晕,大哥,你是想用浏览器的后退啊???

#14


因为你的想法在目前的浏览器里基本是无法实现。

#15


只有一个办法了
就是禁止缓存

<% 

Response.Buffer = True 

Response.ExpiresAbsolute = Now() - 1 

Response.Expires = 0 

Response.CacheControl = "no-cache" 

%> 
这种方法非常有效!它强制浏览器重新访问服务器下载页面,而不是从缓存读取页面。使用这种方法时,编程者的主要任务是创建一个会话级的变量,通过这个变量确定用户是否仍旧可以查看那个不适合通过后退按钮访问的页面。由于浏览器不再缓存这个页面,当用户点击后退按钮时浏览器将重新下载该页面,此时程序就可以检查那个会话变量,看看是否应该允许用户打开这个页面。

#16


你也可以使用<html> 

<head> 

<meta http-equiv="Expires" CONTENT="0"> 

<meta http-equiv="Cache-Control" CONTENT="no-cache"> 

<meta http-equiv="Pragma" CONTENT="no-cache"> 

</head> 

客户端的禁止缓存 

#17


<A HREF="1.htm" onclick="javascript:location.replace(this.href);event.returnValue=false; ">aaaaa</A> 
<script language="JavaScript"> 

<!-- 

javascript:window.history.forward(1); 

//--> 

</script> 

这些都可以
但是这些都有缺点

#18


感谢chinmo,问题终于解决了。

只是有一点迷惑的是
使用这一段
Response.Buffer = True
Response.Expires = 0
Response.CacheControl = "no-cache"
是可行的,页面不会缓存。

但是我直接使用生成的html代码段
<meta http-equiv="Expires" CONTENT="0">  
<meta http-equiv="Cache-Control" CONTENT="no-cache">  
<meta http-equiv="Pragma" CONTENT="no-cache"> 
时却不能禁止缓存,
两种方式的HTML源码是完全一样的,真是奇怪

#19


<%

Response.Buffer = True

Response.ExpiresAbsolute = Now() - 1

Response.Expires = 0

Response.CacheControl = "no-cache"

%> 
虚心请教:上面这个到底怎么实现的呢?控制程序是什么样的?非常感谢!

#20