假如我們有一個這樣的操作流程
1.我們有兩個頁面,一個顯示頁show.html,一個增加資訊頁add.html
2.在show.html中點擊增加資訊的時候.就跳到add.html頁
3.在add.html中有一個返回按鈕,當然有一個提交按鈕
4.每點擊一次提交的時候,頁面就重新整理一次
問題:
當點擊了N次提交後.我點擊返回,我要怎麼樣返回到show.html,
當然不能在伺服器用Response.Redirect(“show.html”).
用JavaScript實現
Code
//在add.html寫如下JS指令碼
<script language="javascript" type="text/javascript">
//點擊提交的時候執行
function add_btn_accept_click()
{
location.href=_Fun_getNextUrlString();
}
//點擊返回的時候執行
function add_btn_back_click()
{
if(location.hash=="")
{
history.go(-1);
}else
{
var _hashNum= parseInt(location.hash.substring(1),10);
history.go(_hashNum);
}
}
//這裡就是自己寫的一個URL方法
function _Fun_getNextUrlString()
{
//定義一個新的URL變數
var _newUrl="";
//得到路徑
var _pathName=location.pathname;
//得到參數
var _search = location.search;
//在參數裡加一個隨機資料,保證每次載入的頁都重新整理一次
var _randIndexOf=_search.indexOf("&rand=");
var _addUrl="&rand="+Math.random();
if(_randIndexOf != -1)
{
_search=_search.substring(0,_randIndexOf);
}
//這裡是最主要的,
//就是在URL地址後面加一個anchor
//每提交一次.anchor就減1.
//這樣就知道你提交了多少次
if(location.hash=="")
{
_newUrl=_pathName+_search+_addUrl+"#-2";
}else
{
var _nextHash=parseInt(location.hash.substring(1),10) - 1;
var _hash="#"+_nextHash;
_newUrl = _pathName+_search+_addUrl+_hash;
}
//返回自訂的URL
return _newUrl;
}
</script>
比如開始你的地址是
http://liuju150.cacacoo.com/add.html
當還沒有提交一次的時候.你點擊返回.
add_btn_back_click()
這個裡面就看你URL後面有沒有你的hash值(#12)
所以就知道你是第一次開啟.所以就直接返回到前一個頁
你每提交一次.
URL後面
http://liuju150.cacacoo.com/add.html?rand=0.12432#-2
http://liuju150.cacacoo.com/add.html?rand=0.12432#-3
http://liuju150.cacacoo.com/add.html?rand=0.12432#-4
後面的數字就加一次.
當你到了N次的時候.
http://liuju150.cacacoo.com/add.html?rand=0.12432#-n
你只要知道這個N是多少.你就可以通知瀏覽器你要返回歷史記錄的前多少條
有時候.真的會說Response.Redirect(“show.html”)這樣一下就可以了
可是我在做一個項目的時候.就有這樣的事.
做了一個使用者控制項,這個控制項裡要有一個返回按鈕
你就不知道這個返回要返回到哪裡去了
看看這裡
http://www.cnblogs.com/liuju150/archive/2009/09/11/1564994.html
這裡是效果
http://liuju150.cacacoo.com/
現在只有一個增加頁的提交按鈕
要是我加一個返回.就可能要用到這個了
好像看到網上還有一種是記錄COOKIE的.
還沒有支研究過啊