禁用浏览器后退按钮

设计基于图象的虚拟漫游  主  题:  如何设计基于图象的虚拟漫游(初学者) 作  者:  sbblove (芳芳)  等  级:    信 誉 值:  99 所属论坛:  专题开发 图形图象 问题点数:  0 回复次数:  10 发表时间:  2003-11-04 15:30:57Z     各位师兄师姐,我是图象处理初入门,而且女孩子对编程什么的,本来就不行。导师叫用vc做基于图象的实验室虚拟漫游,我查了些资料, 阅读详情

禁用浏览器后退按钮

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

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

file://-->

</script>

 

 

   同样地,这种方法虽然有效,但距离“最好的方法”还差得很远。后来我又看到有人建议用location.replace从一个
页面转到另一个页面。这种方法的原理是,用新页面的URL替换当前的历史纪录,这样浏览历史记录中就只有一个页面,后
退按钮永远不会变为可用。我想这可能正是许多人所寻求的方法,但这种方法仍旧不是任何情况下的最好方法。使用这种
方法的实例如下所示:

 

<A HREF="PageName.htm" onclick="javascript:location.replace(this.href);

event.returnValue=false; ">

禁止后退到本页面的链接</A>

 

 

   试试下面这个链接:

   禁止后退到本页面的链接!

   这种方法的缺点在于:简单地运用Response.Redirect将不再有效,这是因为每次用户从一个页面转到另一个页面,
我们都必须用客户端代码清除location.history。另外还要注意,这种方法清除的是最后一个访问历史记录,而不是全部
的访问记录。

   点击上面的链接,你将打开一个简单的HTML页面。再点击后退按钮,你可以看到这时打开的不是本页面,而是本页面
之前的页面!(当然,你必须在浏览器中启用了客户端JavaScript代码。)

   经过一番仔细的寻寻觅觅之后,我发现仍旧无法找出真正能够完全禁用浏览器后退按钮的办法。所有这里介绍的方法
都能够在不同程度上、以不同的方式禁止用户返回前一页面,但它们都有各自的局限。由于不存在能够完全禁用后退按钮
的方法,所以最好的方案应该是:混合运用客户端脚本和服务器端脚本。 

 

VB图象处理功能小考 VB图象处理功能小考最近,因帮别人做VB的图象处理程序,查阅了一些资料,也做了一些实验,有些问题,也有些看法,写下来作为备忘。VB最基本的图象控件是:PictureBox和Image,后者主要用来显示图片,前者既可以显示图片,也可以用来对所显示图片进行必要的处理,例如,对图片进行旋转、放大、缩小,乃至通过对像素的处理达到对图象的所需的加工处理。从现有资料看,VB针对PictureBox提供 阅读详情

相关推荐

图象采集模块

视频采集模块 1. 概述 HMP-I系列图象采集模块实现将PAL制式模拟视频信号实时采集并压缩成标准JPEG

kaiqinkeji00的专栏 922

H5返回页面销毁历史记录

H5返回页面销毁历史记录 window.history.replaceState(null, null,"/b.html");//指定页面

weixin_42262578的博客 3138

C++Builder中大尺寸图象的显示技巧

在C++Builder中利用TImage控件可以轻松地读入并显示图象,但TImage 控件本身不可以接收输入焦点,也没带有滚动条,在显示超出显示区域范围的大图象时,需要对TImage控件进行加强。本文提出两种最容易实现且有效的方法,满足不同应用的需求。    方法一:增加滚动条。    增加滚动条可以通过将TImage放在TScrollBox控件中来实现。步骤如下: 

m13286282的专栏 1112

html页面清除缓存

需求:页面每次打开时清除本页面的缓存。两种方法: 页面打开时,由于缓存的存在,刚刚更新的数据有时无法在页面得到刷新,当这个页面作为模式窗口被打开时问题更为明显。 解决办法为: (1) 用HTML标签设置HTTP头信息 说明:HTTP头信息“Expires”和“Cache-Control”为应用程序服务器提供了一个控制浏览器和代理服务器

光明的代码之路 1万+

html5 删除llocalstorage变量,删除存储在浏览器中的 Local Storage 数据《 HTML5:Web 存储 》...

设置数据用的是 setItem ,获取到设置的数据用的是 getItem .... 如果想要去移除设置的数据 .. 可以使用 localStorage 的 removeItem() 这个方法 …比如移除掉之前设置的 name … localStorage.removeItem … 括号里面加上要移除的数据的名称 …localStorage.removeItem("name")下面可...

weixin_35666711的博客 305

h5 history

<button class="btn1">追加历史</button> <button class="btn2">替换当前历史</button> <script> document.querySelector('.btn1').onclick = function () { /*1.存数据 null*/ ...

qq_42039912的博客 650

屏蔽网页的回退

浏览器的页面的回退有以下几种方式 List item 浏览器导航栏回退按钮 js回退 history.back();后退到上一级历史页面 history.forward(); //前进一个页面 history.go(1);//比如go(1)相当于forward(),go(-1)相当于back()。 关于回退 回退是根据浏览器的缓存返回到相应的页面,是不重新加载页面的。 history也是不能清除...

qq_35275077的博客 611

7种常用函数图象及4种函数图象变换规则

函数的图象是数学,对于研究函数的单调性、奇偶性以及最值(值域)、零点有举足轻重的作用,但是很多同学看到眼花缭乱的函数解析式,就已经晕头转向了,再去画图象,不是这里错,就是那里有问题,图象也画的乱七八糟,更甭提利用图象去解题了!但掌握以下几步,画函数图象将轻而易举: 1、首先,观察是否是基本初等函数(也就是我们在课本中学过的那几类函数),如果是,那就可以直接画;2、如果...

SeaSunExpect的博客 3万+

图象关于y轴对称是什么意思_知识扫盲丨对数函数图象及其性质

人生就像弓箭,如果没有靶子,那么每天的拉弓练习就失去了意义。对数函数作为高考的重难点,同学们一定要熟练掌握呦!小本本记起来~~快和包学习APP打倒这个“大魔王”吧!对数函数图象及其性质01对数函数的图象与性质一般地,对数函数的图象和性质如下表:02对数函数图象的特征点 图象的特征点:,,,利用特征点可以快速作出对数函数的简图.如图象的特征点:,,.03底数对对数函数图象的影响 在同一直角坐标系...

weixin_36027833的博客 6670

Delphi 中图象的放大和缩小

在Delphi中,可利用类Tcanvas的CopyRect方法实现图象的放大和缩小。其功能是将源画布上的一个指定矩形区域(简称源矩形)内的象素,拷贝到目的画布上的一个指定矩形区域(简称目的矩形)中。亦可称之为象素块复制。   由CopyMode属性确定拷贝的模式。在直接拷贝模式(cmSrcCopy)下,当源矩形与目的矩形相等时,图象不变;若源矩形大于目的矩形,图象则缩小;而当源矩形小于目的矩形时

SeekMyself的专栏 8004

怎样把修改后的图象保存到原图?

如果我们打开一幅图象,修改这幅图象后,然后用与原图象相同的格式将文件保存在原来的路径上或者换一种格式来保存!这时,系统会提示我们“GDI+发生一般性错误”,这个问题是怎样产生的呢?这个问题的产生,我们可以简单的说明下:这是因为GDI+在读取图象文件时只是读取该图象文件的头部分!这样,你能了解这幅图的信息,包括该文件图象的宽度、高度和颜色深度信息等.在整个图象文件的生存周期中,总是保持对此图象文件处

lijigang1982的专栏 4351

如何在水晶报表里显示图象?

通常我们要在水晶报表里显示文本和数字数据。有时候,数据库里会包含图象数据,并且我们也希望在水晶报表里使用它。有很多途径可以在报表中显示数据驱动的图象第一要确保图象具有足够的大小和质量。设法在报表里将高质量的大图象显示为简略图是没有意义的。使用图象编辑程序以合适的分辨率及大小创建你能够显示的图象。图象的格式也很重要。虽然 BMP 是一种相当通用的格式,但是它需要占用巨大的空间。因此,将图象转

haibodotnet的专栏 4471

图象转换下

图象转换下*********************************************************************** 刷新 PictureBox 控件的 Picture 对象。对PictureBox中的任何绘图操作,*                  通过它即可转换为Picture对象* 使用该函数可将PictureBox内的图象编辑结果永久更新为

shawls的专栏 1229

图象压缩模型简介

数据压缩模型简介【摘要】:自从香农提出信息论奠定数据压缩的理论基础以来,五十年多来,人们先后提出了很多算法以尽可能的接近压缩极限------熵。本文拟从预测模型、统计模型、字典模型、变换模型、分形模型、模型基等角度出发,大致以时间为序,让大家对图形压缩算法有个大体的了解以及对图象压缩的发展有个总体的把握!一、图象压缩的理论基础数据压缩的理论基础是C. E. Shannon提出的信息论,作为数据压缩

lijigang1982的专栏 4385

图象关于y轴对称是什么意思_快乐说数:对数函数的图象及性质

数学看上去枯燥无味,其实不然,掌握正确的学习方法,我们就能做到快乐学数学。学好数学大致能分为三个步骤:第一,梳理好知识点;第二,学好各种题型;第三:针对所学知识训练巩固。现在我们来看今天要学的内容,先看下边对数函数的图象及性质的思维导图:接着我们针对着对数函数的图象及性质展开来讲,首先是知识梳理:知识点一 对数函数的概念知识点二 对数函数的图象与性质知识点三 反函数接着是题型分类:题型一 对数函数...

weixin_32314595的博客 4561

opencv 将加载的图象进行灰度化处理

文章目录opencv 将加载的图象进行灰度化处理 opencv 将加载的图象进行灰度化处理 # -*- coding:utf-8 -*- # /usr/bin/python ''' Date:2019-05-08--10:07 File:img2gray.py Describe:将加载的图象进行灰度化处理 ''' print (__doc__) import cv2 as cv import ...

全网120W+关注AI拉呱,专注人工智能以及科技前沿! 247

Visual C++中基于多文档视窗模型的重叠图象拼接技术

Visual C++中基于多文档视窗模型的重叠图象拼接技术 辽宁省抚顺石油学院计算机科学与技术系    李志刚  摘要:        图象拼接是在全景视频系统、地理信息系统等应用中经常遇到的一个问题,本文基于网格匹配的方法对边界部分有重叠的图象提出了一种行之有效的对准算法,并通过平滑因子对图象实现了无缝拼接。并应用文档视窗模型实现了该算法,并完成了位图文件的显示、存储等操作,具有一定

糯米糊糊的专栏 3016

Tupper自我指涉公式:图象里竟然包含式子本身

    你认为,一个函数图象里是否有可能包含这个函数本身的“图象”?难以置信的是,还真有人构造了这样一个东西。2001年,Jeff Tupper发表的一篇论文里提到了这样一个有趣的不等式:      在0   其中,n = 960939379918958884971672962127852754715004339660129306651505519271702802395266424

matrix67的专栏 1658
上一篇: jmail4.1用pop3收信的例子
下一篇: 把存储在SQL7的image字段的文件下载到客户端的ASP源代码
11830
博客等级 码龄25年 2粉丝 25原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值