- 热门文章:
- · 请看用javascript设置和读取cookie的简单例子
- · 一个非常精彩的日历程序
- · 一个提交form的小经验
- · 给浏览器的滚动条加上颜色
- · 如何在网页中存取剪贴板中的内容
- · 客户端Cookie中文编程(2)
- · 客户端Cookie中文编程(1)
- · 在javascript中为String对象添加trim,ltrim,rtrim方法
- · 一个使用多选框的小智力题,传教士与野人
- · 实现聊天室在线人员无刷新所需要的javascript技术 - 3
- · 实现聊天室在线人员无刷新所需要的javascript技术 - 2
- · 实现聊天室在线人员无刷新所需要的javascript技术 - 1
上一篇:打开页面就是全屏的方法 >>
网页过期的问题
討論區上常有網友問到這個問題, 如何防止使用者按回上一頁按鈕, 為何會問這一個問題? 應該通常是在防止使用者重複執行一個應用程式, 例如資料庫的新增, 如果使用者按了回上一頁, 有可能會造成重複新增資料, 今天這篇文章就要介紹如何 "盡可能" 的防止使用者按回上一頁
伺服端防止快取
首先來看看伺服端的方法, ASP 的 Response 物件提供了幾個網頁快取 (cache) 相關的屬性, 說明如下
屬性 說明
CacheControl 判斷代理伺服器 (Proxy Server) 是否快取 ASP 的輸出結果
Expires 網頁快取的逾期時間
ExpiresAbsolute 指定網頁快取的逾期時間
所以如果你要防止網頁被快取, 你可以這麼做
<%
Response.Buffer = True
Response.ExpiresAbsolute = Now() - 1
Response.Expires = 0
Response.CacheControl = "no-cache"
%>
利用這個方法, 使用者還是可以回到上一頁, 但由於網頁並沒有被快取, 所以瀏覽器必須重新向伺服器作 Http 請求, 也就是這個網頁會被重新整理 (Refresh)
用戶端防止快取
你也可以使用用戶端 (Client-side) 的方式,
<html>
<head>
<meta http-equiv="expires" content="0">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="pragma" content="no-cache">
</head>
和伺服端的方法產生的結果是一樣的, 但有幾點要注意
Pragma : 當使用安全連結時才使用 Pragma, 如果在非安全連結使用, 那麼效果和 Expires : -1 是相同的, 也就是這個網頁還是會被快取, 但會立即逾時
meta http-equiv 標籤的 cache-control 並不適用於 Internet Explorer 4, 5 版本
移除工具列
這個方法是在網路上看來的, 有點趣味所以也介紹一下, 做法是這樣的, 利用 window.open 方法來開新視窗, 然後關掉原視窗, 但重點是在開視窗時將工具列移除
<script language="javascript">
<!--
function openWindow(url){
newpage = window.open(url,@#newpage@#,@#toolbar=no@#);
newpage.focus();
self.close();
}
//-->
</script>
<a href="javascript:openWindow(@#nextpage.html@#);">下一頁</a>
也是一種方法, 但應該很少人會用, 有一點麻煩! 況且按滑鼠右鍵所出現的 Menu 中也有回上一頁的選項, 此法謹防君子不防小人!
使用 location.replace
Javascript location 物件的 replace() 方法會以指定的網址覆蓋瀏覽器目前瀏覽歷史紀錄, 也就是當你用了這個方法, 瀏覽器就會忘掉過去曾經瀏覽的紀錄, 就親像你第一次開啟瀏覽器一樣, 上一頁的按鈕是灰的
你可以這麼做
<a href="Javascript:location.replace(@#nextpage.html@#)">下一頁</a>
看起來這大概是目前最好的方法! 不過還是有一些缺點, 因為並不是所有的情況都可以套用, 譬如講當你使用 Response.Redirect 時, 這個方法就派不上用場了!
可以歸納出一個結論, 就是要完全關閉瀏覽器回上一頁的功能是不可能的 (目前的瀏覽器), 唯一能做的是因時因地制宜, 結合以上的方法盡可能的防止使用者按回上一頁!
希望這篇文章對你有幫助!
相关文章:
- · 动态增加\删除物件如(Text,Table)的例子
- · session的几个问题
- · 动态输入框的三个函数
- · 在ASP+中使用Cookie
- · Session对象在各浏览器中的有效范围
- · session的用法具体解说
- · ASP实现多语言支持
- · 关于web应用程序的范围与session变量丢失问题的深入研究!
- · 判断访问者的浏览器是否支持javascript和Cookies
- · 下拉框连动的小例子(.htm版)
- · 下拉框连动的小例子(数据库版)
- · 一个查看ASP的javascript程序,方便大家学习ASP程序,进来看看吧(JS)
- · Internet Explorer 错误代码
- · 判断访问者的浏览器是否支持javascript和Cookies
- · ASP实现多语言支持
- · 关于Global.asa文件的深入研究与session变量失效提示的具体方法
- · 关于在浏览器中执行*.exe文件的深入探讨
- · 获得客房端的MAC(Media Access Control)地址
- · 动态缓冲
- · 数据库聊天室的“无刷新”技术要点
- · 您的主页支持各种浏览设备(ASP+篇)(下)
- · 让您的主页支持各种浏览设备(ASP+篇)(上)
- · 让Session对象在不同域名下实现共享
- · 在WAP网站上建立反馈表单
- · 如何使ASP输出结果不支持html语法?
- · Microsoft Script Debugger说明书
- · 使用<meta>标签的ASP源程序例子
- · 彻底终结浏览器Cahce页面的解决方案
- · 关于如何动态地在同一页面实现两个<select>互传(s1 <==> s2)
- · ASP中巧用Response属性
- · 判断客户端是否支持cookie的脚本!
- · 一个类似vbscript的round函数的javascript函数
- · HEAD元素使用集锦
- · 最新的关于Cookies的操作
- · 高级表单验证-针对多次提交表单
- · 脚本控制Frame
- · ASP中Cookie使用指南
- · 在大型社区系统中用二维数组实现用户高级功能(1)
