history与缓存
有很多网站在使用history.go(-1)返回后都可以读出原来文本框中的值,
可是我怎么写返回后文本框中都是空的,似乎把浏览器缓存读不出来!
我写过的代码
<a href="javascript:history.go(-1);">返回</a>
<a href="javascript:history.go(-1); return false;">返回</a>
<a href="" onclick="history.go(-1);return false;">[返回]</a>
<a href="" onclick="history.back(-1);return false;">[返回]</a>
<a href="" onclick="window.history.go(-1);return false;">[返回]</a>
该写的写法都写了,可是还是只能返回 ,不能读出缓存
浏览器也应该没什么问题,因为别人的代码可以正常读出缓存
问题点数:100、回复次数:13Top
1 楼rayFairy()回复于 2005-08-20 22:59:32 得分 5
-------------1.htm
<style type="text/css">
<!--
.disList {
font-size: 14px;
line-height: 20px;
font-family: Arial, Helvetica, sans-serif;
}
.a:link {
font-size: 14px;
color: #D26F00;
text-decoration: none;
}
.a:visited {
font-size: 14px;
color: #F07E00;
text-decoration: underline;
}
.a:hover {
font-size: 14px;
color: #CC6B00;
text-decoration: underline;
}
-->
</style>Top
2 楼rayFairy()回复于 2005-08-20 23:01:54 得分 5
不好意思,呵呵。我用VMware虚拟的机器复制有点问题。。。
---------------------------1.htm
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>无标题文档</title>
<style type="text/css">
<!--
body {
background-color: #000000;
}
-->
</style></head>
<body>
<script>
top.document.all.tt.rows="*,100"
</script>
</body>
</html>
Top
3 楼rayFairy()回复于 2005-08-20 23:02:13 得分 5
----------------------------------2.htm
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>无标题文档</title>
</head>
<body>
</body>
</html>
Top
4 楼adandelion(水源是CSDN最黑的地方,但这个最黑是CSDN一手制造的!)回复于 2005-08-20 23:10:58 得分 15
GZTop
5 楼ccxxcc(cc小超)回复于 2005-08-20 23:14:00 得分 0
谢谢!我试一试!Top
6 楼ccxxcc(cc小超)回复于 2005-08-20 23:24:23 得分 0
按照 rayFairy() 短消息说的
<a href="#" onclick="history.back()">[返回]</a>
这样试试
还是不行Top
7 楼ccxxcc(cc小超)回复于 2005-08-21 00:17:09 得分 0
终于可以读出缓存了
出现这个问题和是因为session
我的登录页面(php+mysql)
在最开始的时候加了一个session_start();
造成了这个问题!
简单代码:
session_start();
$act = $_REQUEST['act'];
if ($act == in){
//数据库连接函数及登录验证模块
}else{
//{form代码}
}
-------------
将seesion值写入if循环中就好了!Top
8 楼GaoXX(窜天猴网络建筑队头子)(中窜集团)回复于 2005-08-21 02:10:59 得分 30
跟服务器的Header头有关系
跟网页的Meta头也有关系
你搜"Header cache-control private"就知道了Top
9 楼pyusksk503(Tony)回复于 2005-08-21 09:05:31 得分 30
哪你可以用window.loation.reload("URL",false)这样的效果是跟history.back()效果是差不多的,从新装载你刚来的哪个页面,false表明不附加新的东西,与history.back(),history.go(-1)功能是一样的.
Top
10 楼rayFairy()回复于 2005-08-21 09:43:52 得分 10
呵呵,我考虑问题简单化了Top
11 楼ccxxcc(cc小超)回复于 2005-08-21 12:11:16 得分 0
我按照老高的测试了一下
即使去掉所有的meta标签,只要session_start()加在if控制之内,就不会出现问题.
当然 绝对和http头有关
我分析的原因:当session_start()在文件最前面时,从一开始就和服务器建立了联系(session已经发出)
所以以后即使在文本框中输入,也不能加入本地缓存,所以history.go(-1),history.back()等等都是在session发出前的那个文本框为空的界面.
不知道这样理解是否正确?Top
12 楼ysfhome(加福)回复于 2005-11-02 18:24:42 得分 0
我也有这样的问题,返回时数据是空的,也把session_start()这个弄掉了,,可还是不能用也!到底要这样才能用,那个大虾可以给我提示一下啊.谢谢!Top
13 楼ccxxcc(cc小超)回复于 2005-11-03 19:14:41 得分 0
http://blog.csdn.net/ccxxcc/archive/2005/08/22/462010.aspxTop




