1、提交後 禁用提交按鈕(像CSDN這樣)
2、資料處理成功馬上跳轉到另外一個頁面!
操作後重新整理的確是個問題,你可以使用跳轉頁面、關閉本頁面,如果是有參資料條件來控制的,那就應該好做了,可以直接修改window.location的值,把值的參數全部改掉,這樣就可以了。我用的方法就是以上的。
document.all("save_"+idx).disabled=true;
剛才有位兄弟也這麼問其實很簡單
在提交的頁面也就是資料庫處理之前
if session("jy")=true then
response.write "錯誤,正在提交"
response.end
end if
在資料庫處理完畢後,釋放session("jy")
session("jy")=false
即可!
用SESSION 或者用個麻煩點的方法:
用window.open 彈出表單輸入頁面,點提交後關閉該頁;
處理提交的ASP頁也是用彈出,即先設定表單的target為"submit_form",點提交時window.open("XXX.asp","submit_form"),然後用JS來提交表單,最後就是window.close();
對處理提交的ASP頁,輸入資料到資料庫完成後,彈出對話方塊,“提交成功”什麼的,最後也來個window.close();
因為對於window.open()開啟的視窗,用window.close()來關閉時不會彈出提示框,直接就關閉視窗了,這樣使用者就根本沒有機會做重複提交了。
不知道這樣合不合你的意思
2、資料處理成功馬上跳轉到另外一個頁面!
這個方法最簡單
轉:(原理借用)
首先,我們可以定義一個session變數用來儲存一個表單的提交序號。這裡我定義為“$userLastAction”。然後在表單裡加入一個hidden變數,把值設為$userLastAction+1:
<input type=Hidden name=lastAction value=<? =$userLastAction+1 ?>>
最後,在處理提交之前判斷表單是否已被提交過:
if($lastAction>$userLastAction and inputIsValid(...)){
$userLastAction++; // 序號加1
// 處理表單資料
}
我一直使用這個
你的幕後處理頁面,也就是資料接收頁面,執行完相關的操作後,使用下面的語句:
response.write("<script>alert('資料提交成功******');window.location.href='你想要轉向的頁面的地址';</script>")
這樣隨便他返回後怎麼重新整理,顯示的始終是“資料提交成功******”的對話方塊
Top
回複人:arcow(沖星) ( ) 信譽:100 2004-10-24 17:09:40 得分:0
?
<SCRIPT LANGUAGE="javascript">
<!--
function input(ok)
{
var M1=ok.ReplyContent.value;
if (M1==''){
alert('回複內容不可以為空白.');
return false;
}
ok.B1.disabled =true;
ok.B2.disabled =true;
return true;
}
//-->
</script>
<form onsubmit="return input(this)">
<input type=text name=ReplyContent>
<input type="submit" value="發出回複" border="0" name="B1">
<input name="B2" TYPE="reset"value="重 寫">
</form>
這樣就行了,提交後直接轉到另一頁面
1、讓提交後返回歷史記錄
Response.Write"<script>alert('OK!添加成功!');history.back();</script>"
2、提交後跳轉到本頁
response.redirect "index.asp"
Response.Write"<script language=javascript>alert('提交成功!');window.location.href='"&Request.ServerVariables("Http_Referer")&"';</script>"
===========================================
防止網頁後退
我們在進行資料庫添加操作的時候,如果允許後退,而正巧有重新整理了頁面,就會再次執行添加操作,無疑這不是我們需要的,像一般網上很多禁止緩衝的代碼,有時並不可靠,這時你只要在操作的頁面加上<body onbeforeunload="window.location.replace('')">就可以了,在網頁的裡指定要定向的新頁,再點後退,看是不是不會再退到剛才的操作頁面了,實際上已經把這個曆史給刪除了
============================
Response.Buffer=true;
Response.ExpiresAbsolute=DateTime.Now.AddSeconds(-1);
Response.Expires=0;
Response.CacheControl="no-cache";
==========
用session如何防止頁面重新整理和後退?
那位朋友可以提供失例代碼?謝謝。
回複人: duguyila(獨孤一狼) ( ) 信譽:28 2003-03-18 12:35:02Z 得分:0
?
急!up!
Top
回複人: zyhowe(★☆www.zyhowe.com☆★) ( ) 信譽:95 2003-03-18 12:36:43Z 得分:0
?
Sub ExpirePage
Response.Buffer = True
Response.ExpiresAbsolute = Now() - 1
Response.Expires = 0
Response.CacheControl = "no-cache"
End Sub
Top
回複人: wangwanfu(wangwanfu) ( ) 信譽:91 2003-03-18 12:39:51Z 得分:0
?
up
Top
回複人: julyclyde(ASP版社區之星) ( ) 信譽:144 2003-03-18 13:01:06Z 得分:0
?
提供不了
後退屬於用戶端的工作,如果讀硬碟,session根本管不著
Top
回複人: duguyila(獨孤一狼) ( ) 信譽:28 2003-03-18 13:02:56Z 得分:0
?
上面的代碼放在什麼位置?如何調用?
對不起,我是新手,還請大家多多關照,謝謝。
Top
回複人: jobine(愚人渡) ( ) 信譽:160 2003-03-18 13:07:31Z 得分:0
?
<%
Response.Buffer = True
Response.ExpiresAbsolute = Now() - 1
Response.Expires = 0
Response.CacheControl = "no-cache"
Response.AddHeader "Pragma", "No-Cache"
%>
放在頁面頭部,用Session不能防止後退重新整理。
Top
回複人: duguyila(獨孤一狼) ( ) 信譽:28 2003-03-18 13:08:22Z 得分:0
?
那重新整理這個功能呢?
能不能實現?
Top
回複人: zxhong(紅透半邊天) ( ) 信譽:202 2003-03-18 13:27:23Z 得分:0
?
防止頁面重新整理:js中可以屏蔽F5,右鍵等
asp中可以通過資料庫校正
session是不能實現的
Top
回複人: jtmoon(逍遙小賊) ( ) 信譽:234 2003-03-18 14:35:45Z 得分:0
?
全面考察“禁用瀏覽器後退按鈕”
2001-4-12 動網先鋒
瀏覽器的後退按鈕使得我們能夠方便地返回以前訪問過的頁面,它無疑非常有用。但有時候我們不得不關閉這個功能,以
防止使用者打亂預定的頁面訪問次序。本文介紹網路上可找到的各種禁用瀏覽器後退按鈕方案,分析它們各自的優缺點和適
用場合。
一、概述
曾經有許多人問起,“怎樣才能‘禁用’瀏覽器的後退按鈕?”,或者“怎樣才能防止使用者點擊後退按鈕返回以前瀏
覽過的頁面?”在ASP論壇上,這個問題也是問得最多的問題之一。遺憾的是,答案非常簡單:我們無法禁用瀏覽器的後退
按鈕。
起先我對於居然有人想要禁用瀏覽器的後退按鈕感到不可思議。後來,看到竟然有那麼多的人想要禁用這個後退按
鈕,我也就釋然(想要禁用的只有後退按鈕,不包括瀏覽器的前進按鈕)。因為在預設情況下,使用者提交表單之後可以通
過後退按鈕返回表單頁面(而不是使用“編輯”按鈕!),然後再次編輯並提交表單向資料庫插入新的記錄。這是我們不
願看到的。
因此我就決定要找出避免出現這種情況的方法。我訪問了許多網站,參考了這些網站所介紹的各種實現方法。如果你
經常訪問ASP編程網站,本文所介紹的部分內容你可能已經見到過。本文的任務是把各種可能的方法都介紹給大家,然後找
出最好的方法!
二、禁止緩衝
在我找到的許多方案中,其中有一種建議禁止頁面緩衝。具體是使用伺服器端指令碼,如下所示:
<%
Response.Buffer = True
Response.ExpiresAbsolute = Now() - 1
Response.Expires = 0
Response.CacheControl = "no-cache"
%>
這種方法非常有效!它強制瀏覽器重新訪問伺服器下載頁面,而不是從緩衝讀取頁面。使用這種方法時,編程者的主
要任務是建立一個會話級的變數,通過這個變數確定使用者是否仍舊可以查看那個不適合通過後退按鈕訪問的頁面。由於瀏
覽器不再緩衝這個頁面,當使用者點擊後退按鈕時瀏覽器將重新下載該頁面,此時程式就可以檢查那個會話變數,看看是否
應該允許使用者開啟這個頁面。
例如,假設我們有如下表單:
<%
Response.Buffer = True
Response.ExpiresAbsolute = Now() - 1
Response.Expires = 0
Response.CacheControl = "no-cache"
If Len(Session("FirstTimeToPage")) > 0 then
&single; 使用者已經訪問過當前頁面,現在是再次返回訪問。
&single; 清除會話變數,將使用者重新導向到登入頁面。
Session("FirstTimeToPage") = ""
Response.Redirect "/Bar.asp"
Response.End
End If
&single; 如果程式運行到這裡,說明使用者能夠查看當前頁面
&single; 以下開始建立表單
%>
<form method=post action="SomePage.asp">
<input type=submit>
</form>
我們藉助會話變數FirstTimeToPage檢查使用者是否是第一次訪問當前頁面。如果不是第一次(即Session
("FirstTimeToPage")包含某個值),那麼我們就清除會話變數的值,然後把使用者重新定向到一個開始頁面。這樣,當表單
提交時(此時SompePage.asp被開啟),我們必須賦予FirstTimeToPage一個值。即,在SomePage.asp中我們需要加上下面
的代碼:
Session("FirstTimeToPage") = "NO"
這樣,已經開啟SomePage.asp的使用者如果點擊後退按鈕,瀏覽器將重新請求伺服器下載頁面,伺服器檢查到Session
("FirstTimeToPage")包含了一個值,於是就清除Session("FirstTimeToPage"),並把使用者重新導向到其他頁面。當然,所有
這一切都需要使用者啟用了Cookie,否則會話變數將是無效的。(有關該問題的更多說明,請參見For session variables
to work, must the Web visitor have cookies enabled?)
另外,我們也可以用用戶端代碼使瀏覽器不再緩衝Web頁面:
<html>
<head>
<meta http-equiv="Expires" CONTENT="0">
<meta http-equiv="Cache-Control" CONTENT="no-cache">
<meta http-equiv="Pragma" CONTENT="no-cache">
</head>
如果使用上面的方法強制瀏覽器不再緩衝Web頁面,必須注意以下幾點:
只有在使用安全連線時“Pragma: no-cache”才防止瀏覽器快取頁面面。對於不受安全保護的頁面,“Pragma: no-cache”
被視為與“Expires: -1”相同,此時瀏覽器仍舊快取頁面面,但把頁面標記為立即到期。
在IE 4或5中,“Cache-Control”META HTTP-EQUIV標記將被忽略,不起作用。
在實際應用中我們可以加上所有這些代碼。然而,由於這種方法不能適用於所有的瀏覽器,所以是不推薦使用的。但
如果是在Intranet環境下,管理員可以控制使用者使用哪種瀏覽器,我想還是有人會使用這種方法。
三、其他方法
接下來我們要討論的方法以後退按鈕本身為中心,而不是瀏覽器緩衝。這兒有一篇文章Rewiring the Back Button很
值得參考。不過我注意到,如果使用這種方法,雖然使用者點擊一下後退按鈕時他不會看到以前輸入資料的頁面,但只要點
擊兩次就可以,這可不是我們希望的效果,因為很多時候,固執的使用者總是能夠找到繞過預防措施的辦法。
另外一種禁用後退按鈕的辦法是用用戶端JavaScript開啟一個沒有工具條的視窗,這使得使用者很難返回前一頁面,但
不是不可能。一種更安全但相當惱人的方法是,當表單提交時開啟一個新的視窗,與此同時關閉表單所在的視窗。但我覺
得這種方法不值得認真考慮,因為我們總不能讓使用者每提交一個表單就開啟一個新視窗。
那麼,在那個我們不想讓使用者返回的頁面是否也可以加入JavaScript代碼呢?在這個頁面中加入的JavaScript代碼可
用來產生點擊前進按鈕的效果,這樣也就抵消了使用者點擊後退按鈕所產生的動作。用於實現該功能的JavaScript代碼如下
所示:
<script language="JavaScript">
<!--
javascript:window.history.forward(1);
//-->
</script>
同樣地,這種方法雖然有效,但距離“最好的方法”還差得很遠。後來我又看到有人建議用location.replace從一個
頁面轉到另一個頁面。這種方法的原理是,用新頁面的URL替換當前的曆史紀錄,這樣瀏覽歷程記錄中就只有一個頁面,後
退按鈕永遠不會變為可用。我想這可能正是許多人所尋求的方法,但這種方法仍舊不是任何情況下的最好方法。使用這種
方法的執行個體如下所示:
<A HREF="PageName.htm" onclick="javascript:location.replace(this.href);
event.returnValue=false; ">
禁止後退到本頁面的連結</A>
試試下面這個連結:
禁止後退到本頁面的連結!
這種方法的缺點在於:簡單地運用Response.Redirect將不再有效,這是因為每次使用者從一個頁面轉到另一個頁面,
我們都必須用用戶端代碼清除location.history。另外還要注意,這種方法清除的是最後一個訪問記錄,而不是全部
的訪問記錄。
點擊上面的連結,你將開啟一個簡單的HTML頁面。再點擊後退按鈕,你可以看到這時開啟的不是本頁面,而是本頁面
之前的頁面!(當然,你必須在瀏覽器中啟用了用戶端JavaScript代碼。)
經過一番仔細的尋尋覓覓之後,我發現仍舊無法找出真正能夠完全禁用瀏覽器後退按鈕的辦法。所有這裡介紹的方法
都能夠在不同程度上、以不同的方式禁止使用者返回前一頁面,但它們都有各自的局限。由於不存在能夠完全禁用後退按鈕
的方法,所以最好的方案應該是:混合運用用戶端指令碼和伺服器端指令碼。
Top
回複人: julyclyde(ASP版社區之星) ( ) 信譽:144 2003-03-18 18:36:58Z 得分:0
?
上面那麼長,只一句有用
就是:
我發現仍舊無法找出真正能夠完全禁用瀏覽器後退按鈕的辦法
關於頁面重新整理的問題(後退再前進!)
就是我在自己的網頁上有“追加”按鈕,每加一個函數需要到一個csv檔案中進行匹配看她是否存在,如果存在就能正常加入到表格中,否則提示該函數不存在!
我是用cgi做的,在cgi處理,然後加了一個標籤在js中,如果函數不存在,標籤就是//表示聘閉掉這條語句,如果存在標籤就是空格不影響這個alert語句!
但是現在在ie顯示中有個問題!在這個頁面顯示正常,但是如果點擊後退再前進的話,這個畫面直接就彈出alert視窗了!我的js函數觸發是在onload()中調用的,就是畫面顯示就調用!!
請問如何解決這個問題!!!!?謝謝!
回複人: hrong(黃蓉 被正身封殺中) ( ) 信譽:103 2003-11-24 22:28:02Z 得分:20
?
設定頁面在用戶端不緩衝:
HTML
<META HTTP-EQUIV="pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Cache-Control" CONTENT="no-cache, must-revalidate">
<META HTTP-EQUIV="expires" CONTENT="Wed, 26 Feb 1978 08:21:57 GMT">
Top
回複人: supere(虛心求教) ( ) 信譽:69 2003-11-24 22:49:15Z 得分:20
?
你強制頁面不被緩衝就可以了
網頁不會被緩衝
HTM網頁
<META HTTP-EQUIV="pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Cache-Control" CONTENT="no-cache,
must-revalidate">
<META HTTP-EQUIV="expires" CONTENT="Wed, 26 Feb 1997
08:21:57 GMT">
或者<META HTTP-EQUIV="expires" CONTENT="0">
ASP網頁
Response.Expires = -1
Response.ExpiresAbsolute = Now() - 1
Response.cachecontrol = "no-cache"
PHP網頁
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");
Top
回複人: nakusakula(121) ( ) 信譽:100 2003-11-25 02:01:16Z 得分:0
?
<META HTTP-EQUIV="pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Cache-Control" CONTENT="no-cache, must-revalidate">
<META HTTP-EQUIV="expires" CONTENT="Wed, 26 Feb 1978 08:21:57 GMT">
加入這些就可以嗎?no-cache這些都是固定調用嗎?Wed, 26 Feb 1978 08:21:57 GMT這個東西要不要?
Top
回複人: colee(浪漫的驚喜) ( ) 信譽:102 2003-11-25 10:07:30Z 得分:10
?
到期時間當然要,還要設定在目前時間之前
Top
回複人: nakusakula(121) ( ) 信譽:100 2003-11-26 11:13:48Z 得分:0
?
好的,謝謝大家!!問題基本解決!
Top
該問題已經結貼 ,得分記錄: hrong (20)、 supere (20)、 colee (10)、
如何使網頁的後退按鈕和重新整理按鈕失效?
我在一個網頁中隨機抽取了一部分試題,並且在onload中調用時鐘計時。一旦重新整理,則時鐘倒計時重新開始,並且隨機選取的題目換了;如果後退再前進,填寫的答案還在,而時鐘重新開始。所以我想使網頁的後退按鈕和重新整理按鈕失效,如何??
回複人: leo1999(絕對在乎你) ( ) 信譽:89 2003-05-28 12:11:27Z 得分:0
?
索性不要他們啦。
用window.open()開啟啦。
Top
回複人: duanyuana(想飛) ( ) 信譽:100 2003-05-28 12:13:50Z 得分:0
?
幫忙頂,我做了個考試系統,也有這樣的問題。
Top
回複人: mustapha(O~U Gain) ( ) 信譽:84 2003-05-28 12:15:00Z 得分:0
?
用window.open()有問題啊,首先用程式控制原視窗關掉(windows.close)前會有提示,還有在開啟的視窗再用window.open(),則指定視窗大小的視窗無效。
Top
回複人: piaomiao_jxz(黑心魚) ( ) 信譽:95 2003-06-02 13:11:23Z 得分:0
?
你應該弄成當考生一進入系統後,它就隨機抽了一份固定的考卷了,不管他重新整理多少次,考題都不會變的。
要想控制別人按後退,本人只想到window.open()。使它沒的後退了。
Top
回複人: whcasp(笑看人生) ( ) 信譽:94 2003-06-02 13:18:31Z 得分:0
?
buffer=false
Top
回複人: dgsrest() ( ) 信譽:91 2003-06-02 13:24:06Z 得分:0
?
禁止頁面緩衝。具體是使用伺服器端指令碼,如下所示:
< %
Response.Buffer = True
Response.ExpiresAbsolute = Now() - 1
Response.Expires = 0
Response.CacheControl = "no-cache"
% >
Top
回複人: piaomiao_jxz(黑心魚) ( ) 信譽:95 2003-06-30 11:13:47Z 得分:0
?
瀏覽器的後退按鈕使得我們能夠方便地返回以前訪問過的頁面,它無疑非常有用。但有時候我們不得不關閉這個功能,以防止使用者打亂預定的頁面訪問次序。本文介紹網路上可找到的各種禁用瀏覽器後退按鈕方案,分析它們各自的優缺點和適用場合。
一、概述
曾經有許多人問起,“怎樣才能‘禁用’瀏覽器的後退按鈕?”,或者“怎樣才能防止使用者點擊後退按鈕返回以前瀏覽過的頁面?”在ASP論壇上,這個問題也是問得最多的問題之一。遺憾的是,答案非常簡單:我們無法禁用瀏覽器的後退按鈕。
起先我對於居然有人想要禁用瀏覽器的後退按鈕感到不可思議。後來,看到竟然有那麼多的人想要禁用這個後退按鈕,我也就釋然(想要禁用的只有後退按鈕,不包括瀏覽器的前進按鈕)。因為在預設情況下,使用者提交表單之後可以通過後退按鈕返回表單頁面(而不是使用“編輯”按鈕!),然後再次編輯並提交表單向資料庫插入新的記錄。這是我們不願看到的。
因此我就決定要找出避免出現這種情況的方法。我訪問了許多網站,參考了這些網站所介紹的各種實現方法。如果你經常訪問ASP編程網站,本文所介紹的部分內容你可能已經見到過。本文的任務是把各種可能的方法都介紹給大家,然後找出最好的方法!
二、禁止緩衝
在我找到的許多方案中,其中有一種建議禁止頁面緩衝。具體是使用伺服器端指令碼,如下所示:
<%
Response.Buffer = True
Response.ExpiresAbsolute = Now() - 1
Response.Expires = 0
Response.CacheControl = "no-cache"
%>
這種方法非常有效!它強制瀏覽器重新訪問伺服器下載頁面,而不是從緩衝讀取頁面。使用這種方法時,編程者的主要任務是建立一個會話級的變數,通過這個變數確定使用者是否仍舊可以查看那個不適合通過後退按鈕訪問的頁面。由於瀏覽器不再緩衝這個頁面,當使用者點擊後退按鈕時瀏覽器將重新下載該頁面,此時程式就可以檢查那個會話變數,看看是否應該允許使用者開啟這個頁面。
例如,假設我們有如下表單:
<%
Response.Buffer = True
Response.ExpiresAbsolute = Now() - 1
Response.Expires = 0
Response.CacheControl = "no-cache"
If Len(Session("FirstTimeToPage")) > 0 then
&single; 使用者已經訪問過當前頁面,現在是再次返回訪問。
&single; 清除會話變數,將使用者重新導向到登入頁面。
Session("FirstTimeToPage") = ""
Response.Redirect "/Bar.asp"
Response.End
End If
&single; 如果程式運行到這裡,說明使用者能夠查看當前頁面
&single; 以下開始建立表單
%>
<form method=post action="SomePage.asp">
<input type=submit>
</form>
我們藉助會話變數FirstTimeToPage檢查使用者是否是第一次訪問當前頁面。如果不是第一次(即Session("FirstTimeToPage")包含某個值),那麼我們就清除會話變數的值,然後把使用者重新定向到一個開始頁面。這樣,當表單提交時(此時SompePage.asp被開啟),我們必須賦予FirstTimeToPage一個值。即,在SomePage.asp中我們需要加上下面的代碼:
Session("FirstTimeToPage") = "NO"
這樣,已經開啟SomePage.asp的使用者如果點擊後退按鈕,瀏覽器將重新請求伺服器下載頁面,伺服器檢查到Session("FirstTimeToPage")包含了一個值,於是就清除Session("FirstTimeToPage"),並把使用者重新導向到其他頁面。當然,所有這一切都需要使用者啟用了Cookie,否則會話變數將是無效的。(有關該問題的更多說明,請參見For session ariables
to work, must the Web visitor have cookies enabled?)
另外,我們也可以用用戶端代碼使瀏覽器不再緩衝Web頁面:
<html>
<head>
<meta http-equiv="Expires" CONTENT="0">
<meta http-equiv="Cache-Control" CONTENT="no-cache">
<meta http-equiv="Pragma" CONTENT="no-cache">
</head>
如果使用上面的方法強制瀏覽器不再緩衝Web頁面,必須注意以下幾點:
只有在使用安全連線時“Pragma: no-cache”才防止瀏覽器快取頁面面。對於不受安全保護的頁面,“Pragma: no-cache”被視為與“Expires: -1”相同,此時瀏覽器仍舊快取頁面面,但把頁面標記為立即到期。在IE 4或5中,“Cache-Control”META HTTP-EQUIV標記將被忽略,不起作用。
在實際應用中我們可以加上所有這些代碼。然而,由於這種方法不能適用於所有的瀏覽器,所以是不推薦使用的。但如果是在Intranet環境下,管理員可以控制使用者使用哪種瀏覽器,我想還是有人會使用這種方法。
三、其他方法
接下來我們要討論的方法以後退按鈕本身為中心,而不是瀏覽器緩衝。這兒有一篇文章Rewiring the Back Button很值得參考。不過我注意到,如果使用這種方法,雖然使用者點擊一下後退按鈕時他不會看到以前輸入資料的頁面,但只要點擊兩次就可以,這可不是我們希望的效果,因為很多時候,固執的使用者總是能夠找到繞過預防措施的辦法。
另外一種禁用後退按鈕的辦法是用用戶端JavaScript開啟一個沒有工具條的視窗,這使得使用者很難返回前一頁面,但不是不可能。一種更安全但相當惱人的方法是,當表單提交時開啟一個新的視窗,與此同時關閉表單所在的視窗。但我覺得這種方法不值得認真考慮,因為我們總不能讓使用者每提交一個表單就開啟一個新視窗。
那麼,在那個我們不想讓使用者返回的頁面是否也可以加入JavaScript代碼呢?在這個頁面中加入的JavaScript代碼可用來產生點擊前進按鈕的效果,這樣也就抵消了使用者點擊後退按鈕所產生的動作。用於實現該功能的JavaScript代碼如下
所示:
<script language="JavaScript">
<!--
javascript:window.history.forward(1);
//-->
</script>
同樣地,這種方法雖然有效,但距離“最好的方法”還差得很遠。後來我又看到有人建議用location.replace從一個頁面轉到另一個頁面。這種方法的原理是,用新頁面的URL替換當前的曆史紀錄,這樣瀏覽歷程記錄中就只有一個頁面,後退按鈕永遠不會變為可用。我想這可能正是許多人所尋求的方法,但這種方法仍舊不是任何情況下的最好方法。使用這種方法的執行個體如下所示:
<A HREF="PageName.htm" onclick="javascript:location.replace(this.href);
event.returnValue=false; ">
禁止後退到本頁面的連結</A>
禁止後退到本頁面的連結!
這種方法的缺點在於:簡單地運用Response.Redirect將不再有效,這是因為每次使用者從一個頁面轉到另一個頁面,我們都必須用用戶端代碼清除location.history。另外還要注意,這種方法清除的是最後一個訪問記錄,而不是全部的訪問記錄。
點擊上面的連結,你將開啟一個簡單的HTML頁面。再點擊後退按鈕,你可以看到這時開啟的不是本頁面,而是本頁面之前的頁面!(當然,你必須在瀏覽器中啟用了用戶端JavaScript代碼。)
經過一番仔細的尋尋覓覓之後,我發現仍舊無法找出真正能夠完全禁用瀏覽器後退按鈕的辦法。所有這裡介紹的方法都能夠在不同程度上、以不同的方式禁止使用者返回前一頁面,但它們都有各自的局限。由於不存在能夠完全禁用後退按鈕的方法,所以最好的方案應該是:混合運用用戶端指令碼和伺服器端指令碼。
<html>
<head>
<meta http-equiv="Expires" CONTENT="0">
<meta http-equiv="Cache-Control" CONTENT="no-cache">
<meta http-equiv="Pragma" CONTENT="no-cache">
</head>
<script language="JavaScript">
<!--
javascript:window.history.forward(1);
//-->
</script>
Top
回複人: cabecbbc() ( ) 信譽:100 2003-06-30 11:56:06Z 得分:0
?
建議不要用倒計時鐘,用正計時吧,,,,
倒計時會增加考生壓力的,分數會下降