全面考察“禁用浏览器后退按钮”

2016-01-29 18:20 4 1 收藏

全面考察“禁用浏览器后退按钮”,全面考察“禁用浏览器后退按钮”

【 tulaoshi.com - ASP 】

  浏览器的后退按钮使得我们能够方便地返回以前访问过的页面,它无疑非常有用。但有时候我们不得不关闭这个功能,以防止用户打乱预定的页面访问次序。本文介绍网络上可找到的各种禁用浏览器后退按钮方案,分析它们各自的优缺点和适用场合。

一、概述
   曾经有许多人问起,“怎样才能‘禁用’浏览器的后退按钮?”,或者“怎样才能防止用户点击后退按钮返回以前浏览过的页面?”在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”MET

来源:https://www.tulaoshi.com/n/20160129/1505355.html

延伸阅读
标签: 浏览器
google浏览器主页按钮在哪设置   打开google浏览器,点击自定义及控制google chrome按钮,选择设置,如图: 在设置的页面中找到外观,将显示主页按钮勾上,这样就可以把主页按钮显示出来了。如图:
标签: 浏览器
搜狗浏览器2015如何禁用鼠标手势   打开搜狗浏览器菜单栏-工具-搜狗浏览器选项,在左侧选择鼠标手势选项卡,右侧将鼠标手势显示轨迹和鼠标手势显示动作提示的对勾勾去。 再将下方的鼠标手势定义的所有选项选择为"没有动作",单击确定即可。
标签: 浏览器
傲游云浏览器全面体验 提到傲游,我往往总会想起在我还在上学的那个年代,那时这款名为myIE2的浏览器让我意识到除了在系统自带的在IE浏览器之外,还有这么如此出色的浏览器可供选择。虽然之后我也使用过一些其他的浏览器,不过再也没有一款浏览器能够给我当年傲游给我带来的震撼感觉,包括firefox,包括chrome,即便这些浏览器都有着各种...
标签: 浏览器 Web开发
Netscape Navigator 9 Netscape Navigator 9 (Beta 1) 于 2007 年 6 月发布。它基于 Mozilla Firefox 2。 Navigator 9 中的一些新特性:Mozilla 特性 由于 Navigator 9 基于 Mozilla,它拥有所有最新的 Mozilla 特性。 URL 纠错 Navigator 9 会自动校正 URL。 Link Pad 一个新的 sidebar 特性,允许在不搞乱书签的情况下保存新闻日后访问...
标签: Web开发
Firefox 是由 Mozilla 开发的开源 web 浏览器。 Firefox 是什么? Firefox 是一款免费的可用于 Windows、Linux 和 Mac 的开源 web 浏览器。它小巧快速,可提供弹窗阻止和标签式浏览等许多新特性。 Firefox 基于 Mozilla 代码,是标准兼容性最好的浏览器之一。 Firefox 可用于 Windows 98、Windows 2000、Windows XP、Mac OS X 以及 Linu...

经验教程

403

收藏

68
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部