成人午夜激情影院,小视频免费在线观看,国产精品夜夜嗨,欧美日韩精品一区二区在线播放

當(dāng)前位置:首頁(yè)>>軟件教程>>新聞內(nèi)容  
禁用瀏覽器的后退按鈕
作者:佚名 發(fā)布時(shí)間:2004-1-13 8:35:49 | 【字體:

  瀏覽器的后退按鈕使得我們能夠方便地返回以前訪問(wèn)過(guò)的頁(yè)面,它無(wú)疑非常有用。但有時(shí)候我們不得不關(guān)閉這個(gè)功能,以防止用戶打亂預(yù)定的頁(yè)面訪問(wèn)次序。本文介紹網(wǎng)絡(luò)上可找到的各種禁用瀏覽器后退按鈕方案,分析它們各自的優(yōu)缺點(diǎn)和適用場(chǎng)合。

    一、概述 
  曾經(jīng)有許多人問(wèn)起,“怎樣才能‘禁用’瀏覽器的后退按鈕?”,或者“怎樣才能防止用戶點(diǎn)擊后退按鈕返回以前瀏覽過(guò)的頁(yè)面?”我訪問(wèn)了許多網(wǎng)站,參考了這些網(wǎng)站所介紹的各種實(shí)現(xiàn)方法。如果你經(jīng)常訪問(wèn)ASP編程網(wǎng)站,本文所介紹的部分內(nèi)容你可能已經(jīng)見(jiàn)到過(guò)。本文的任務(wù)是把各種可能的方法都介紹給大家,然后找出最好的方法!  
    
    二、禁止緩存     
  在我找到的許多方案中,其中有一種建議禁止頁(yè)面緩存。具體是使用服務(wù)器端腳本,如下所示: 
<%
Response.Buffer = True
Response.ExpiresAbsolute = Now() - 1
Response.Expires = 0
Response.CacheControl = "no-cache"
%> 
  這種方法非常有效!它強(qiáng)制瀏覽器重新訪問(wèn)服務(wù)器下載頁(yè)面,而不是從緩存讀取頁(yè)面。使用這種方法時(shí),編程者的主要任務(wù)是創(chuàng)建一個(gè)會(huì)話級(jí)的變量,通過(guò)這個(gè)變量確定用戶是否仍舊可以查看那個(gè)不適合通過(guò)后退按鈕訪問(wèn)的頁(yè)面。由于瀏覽器不再緩存這個(gè)頁(yè)面,當(dāng)用戶點(diǎn)擊后退按鈕時(shí)瀏覽器將重新下載該頁(yè)面,此時(shí)程序就可以檢查那個(gè)會(huì)話變量,看看是否應(yīng)該允許用戶打開(kāi)這個(gè)頁(yè)面。       
  例如,假設(shè)我們有如下表單: 
<%
Response.Buffer = True
Response.ExpiresAbsolute = Now() - 1
Response.Expires = 0
Response.CacheControl = "no-cache"
If Len(Session("FirstTimeToPage")) > 0 then       
    "用戶已經(jīng)訪問(wèn)過(guò)當(dāng)前頁(yè)面,現(xiàn)在是再次返回訪問(wèn)。       
    "清除會(huì)話變量,將用戶重定向到登錄頁(yè)面。       
    Session("FirstTimeToPage") = ""       
    Response.Redirect "/Bar.asp"       
    Response.End       
End If      
    "如果程序運(yùn)行到這里,說(shuō)明用戶能夠查看當(dāng)前頁(yè)面 
    "以下開(kāi)始創(chuàng)建表單       
%>    
    < form method=post action="SomePage.asp">       
    < input type=submit>       
    < /form>    
  我們借助會(huì)話變量FirstTimeToPage檢查用戶是否是第一次訪問(wèn)當(dāng)前頁(yè)面。如果不是第一次(即Session("FirstTimeToPage")包含某個(gè)值),那么我們就清除會(huì)話變量的值,然后把用戶重新定向到一個(gè)開(kāi)始頁(yè)面。這樣,當(dāng)表單提交時(shí)(此時(shí)SompePage.asp被打開(kāi)),我們必須賦予FirstTimeToPage一個(gè)值。即,在SomePage.asp中我們需要加上下面的代碼:
    Session("FirstTimeToPage") = "NO"       
  這樣,已經(jīng)打開(kāi)SomePage.asp的用戶如果點(diǎn)擊后退按鈕,瀏覽器將重新請(qǐng)求服務(wù)器下載頁(yè)面,服務(wù)器檢查到Session("FirstTimeToPage")包含了一個(gè)值,于是就清除Session("FirstTimeToPage"),并把用戶重定向到其他頁(yè)面。當(dāng)然,所有這一切都需要用戶啟用了Cookie,否則會(huì)話變量將是無(wú)效的。     
       另外,我們也可以用客戶端代碼使瀏覽器不再緩存Web頁(yè)面:      
    < html>       
    < head>       
    < meta http-equiv="Expires" CONTENT="0">       
    < meta http-equiv="Cache-Control" CONTENT="no-cache">       
    < meta http-equiv="Pragma" CONTENT="no-cache">       
    < /head>    
  如果使用上面的方法強(qiáng)制瀏覽器不再緩存Web頁(yè)面,必須注意以下幾點(diǎn):       
    只有在使用安全連接時(shí)“Pragma: no-cache”才防止瀏覽器緩存頁(yè)面。對(duì)于不受安全保護(hù)的頁(yè)面,“Pragma: no-cache”被視為與“Expires: -1”相同,此時(shí)瀏覽器仍舊緩存頁(yè)面,但把頁(yè)面標(biāo)記為立即過(guò)期。 
    在IE 4或5中,“Cache-Control”META HTTP-EQUIV標(biāo)記將被忽略,不起作用。 
  在實(shí)際應(yīng)用中我們可以加上所有這些代碼。然而,由于這種方法不能適用于所有的瀏覽器,所以是不推薦使用的。但如果是在Intranet環(huán)境下,管理員可以控制用戶使用哪種瀏覽器,我想還是有人會(huì)使用這種方法。

    三、其他方法       
  接下來(lái)我們要討論的方法以后退按鈕本身為中心,而不是瀏覽器緩存。這兒有一篇文章Rewiring the Back Button很值得參考。不過(guò)我注意到,如果使用這種方法,雖然用戶點(diǎn)擊一下后退按鈕時(shí)他不會(huì)看到以前輸入數(shù)據(jù)的頁(yè)面,但只要點(diǎn)擊兩次就可以,這可不是我們希望的。

  效果,因?yàn)楹芏鄷r(shí)候,固執(zhí)的用戶總是能夠找到繞過(guò)預(yù)防措施的辦法。       
  另外一種禁用后退按鈕的辦法是用客戶端JavaScript打開(kāi)一個(gè)沒(méi)有工具條的窗口,這使得用戶很難返回前一頁(yè)面,但不是不可能。一種更安全但相當(dāng)惱人的方法是,當(dāng)表單提交時(shí)打開(kāi)一個(gè)新的窗口,與此同時(shí)關(guān)閉表單所在的窗口。但我覺(jué)得這種方法不值得認(rèn)真考慮,因?yàn)槲覀兛偛荒茏層脩裘刻峤灰粋(gè)表單就打開(kāi)一個(gè)新窗口。       
  那么,在那個(gè)我們不想讓用戶返回的頁(yè)面是否也可以加入JavaScript代碼呢?在這個(gè)頁(yè)面中加入的JavaScript代碼可用來(lái)產(chǎn)生點(diǎn)擊前進(jìn)按鈕的效果,這樣也就抵消了用戶點(diǎn)擊后退按鈕所產(chǎn)生的動(dòng)作。用于實(shí)現(xiàn)該功能的JavaScript代碼如下所示:  
    < script language="JavaScript">       
    <!--
 javascript:window.history.forward(1);
    //-->       
    < /script>     
  同樣地,這種方法雖然有效,但距離“最好的方法”還差得很遠(yuǎn)。后來(lái)我又看到有人建議用location.replace從一個(gè)頁(yè)面轉(zhuǎn)到另一個(gè)頁(yè)面。這種方法的原理是,用新頁(yè)面的URL替換當(dāng)前的歷史紀(jì)錄,這樣瀏覽歷史記錄中就只有一個(gè)頁(yè)面,后退按鈕永遠(yuǎn)不會(huì)變?yōu)榭捎。我想這可能正是許多人所尋求的方法,但這種方法仍舊不是任何情況下的最好方法。使用這種方法的實(shí)例如下所示:    
    < A HREF="PageName.htm" onclick="javascript:location.replace(this.href); event.returnValue=false; ">  
    禁止后退到本頁(yè)面的鏈接            
  試試下面這個(gè)鏈接:       
  禁止后退到本頁(yè)面的鏈接!       
  這種方法的缺點(diǎn)在于:簡(jiǎn)單地運(yùn)用Response.Redirect將不再有效,這是因?yàn)槊看斡脩魪囊粋(gè)頁(yè)面轉(zhuǎn)到另一個(gè)頁(yè)面,我們都必須用客戶端代碼清除location.history。另外還要注意,這種方法清除的是最后一個(gè)訪問(wèn)歷史記錄,而不是全部的訪問(wèn)記錄。       
  點(diǎn)擊上面的鏈接,你將打開(kāi)一個(gè)簡(jiǎn)單的HTML頁(yè)面。再點(diǎn)擊后退按鈕,你可以看到這時(shí)打開(kāi)的不是本頁(yè)面,而是本頁(yè)面之前的頁(yè)面!(當(dāng)然,你必須在瀏覽器中啟用了客戶端JavaScript代碼。)       
  經(jīng)過(guò)一番仔細(xì)的尋尋覓覓之后,我發(fā)現(xiàn)仍舊無(wú)法找出真正能夠完全禁用瀏覽器后退按鈕的辦法。所有這里介紹的方法都能夠在不同程度上、以不同的方式禁止用戶返回前一頁(yè)面,但它們都有各自的局限。由于不存在能夠完全禁用后退按鈕的方法,所以最好的方案應(yīng)該是:混合運(yùn)用客戶端腳本和服務(wù)器端腳本。


文章來(lái)源:西部電子轉(zhuǎn)
 放生
 愚愛(ài)
 夠愛(ài)
 觸電
 白狐
 葬愛(ài)
 光榮
 畫心
 火花
 稻香
 小酒窩
 下雨天
 右手邊
 安靜了
 魔杰座
 你不像她
 邊做邊愛(ài)
 擦肩而過(guò)
 我的答鈴
 懷念過(guò)去
 等一分鐘
 放手去愛(ài)
 冰河時(shí)代
 你的承諾
 自由飛翔
 原諒我一次
 吻的太逼真
 左眼皮跳跳
 做你的愛(ài)人
 一定要愛(ài)你
 飛向別人的床
 愛(ài)上別人的人
 感動(dòng)天感動(dòng)地
 心在跳情在燒
 玫瑰花的葬禮
 有沒(méi)有人告訴你
 即使知道要見(jiàn)面
 愛(ài)上你是一個(gè)錯(cuò)
 最后一次的溫柔
 愛(ài)上你是我的錯(cuò)
 怎么會(huì)狠心傷害我
 不是因?yàn)榧拍畔?/a>
 親愛(ài)的那不是愛(ài)情
 難道愛(ài)一個(gè)人有錯(cuò)
 寂寞的時(shí)候說(shuō)愛(ài)我
主站蜘蛛池模板: 天水市| 达日县| 南川市| 永定县| 鄄城县| 奉新县| 南充市| 黑龙江省| 乳山市| 涪陵区| 濉溪县| 出国| 搜索| 阳东县| 石首市| 锡林浩特市| 保山市| 松阳县| 阳原县| 汝南县| 高尔夫| 桦川县| 深水埗区| 宁津县| 桐梓县| 神池县| 上犹县| 得荣县| 天峻县| 拜城县| 行唐县| 北安市| 三河市| 阳曲县| 丰原市| 瑞金市| 新晃| 南康市| 双江| 句容市| 永平县|