热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

页面失效

在你的不想被缓存的页面中加上
在你的不想被缓存的页面中加上     
     
     
     

在IE中如何让用户按“后退”键后使“向前”键失效?????     
---------------------------------------------------------------     
  
二、禁止缓存         
  
      在我找到的许多方案中,其中有一种建议禁止页面缓存。具体是使用服务器端脚本,如下所示:         
  
<%         
  
Response.Buffer    &#61;    True         
  
Response.ExpiresAbsolute    &#61;    Now()    -    1         
  
Response.Expires    &#61;    0         
  
Response.CacheControl    &#61;        "no-cache    "         
  
%    >         
  
      这种方法非常有效&#xff01;它强制浏览器重新访问服务器下载页面&#xff0c;而不是从缓存读取页面。使用这种方法时&#xff0c;编程者的主     
要任务是创建一个会话级的变量&#xff0c;通过这个变量确定用户是否仍旧可以查看那个不适合通过后退按钮访问的页面。由于浏     
览器不再缓存这个页面&#xff0c;当用户点击后退按钮时浏览器将重新下载该页面&#xff0c;此时程序就可以检查那个会话变量&#xff0c;看看是否     
应该允许用户打开这个页面。         
  
      例如&#xff0c;假设我们有如下表单&#xff1a;         
<%         
  
Response.Buffer    &#61;    True         
Response.ExpiresAbsolute    &#61;    Now()    -    1         
Response.Expires    &#61;    0         
Response.CacheControl    &#61;        "no-cache    "         
If    Len(Session(    "FirstTimeToPage    "))        >    0    then         
&single;    用户已经访问过当前页面&#xff0c;现在是再次返回访问。         
&single;    清除会话变量&#xff0c;将用户重定向到登录页面。         
Session(    "FirstTimeToPage    ")    &#61;        "    "         
Response.Redirect        "/Bar.asp    "         
Response.End         
End    If         
&single;    如果程序运行到这里&#xff0c;说明用户能够查看当前页面         
&single;    以下开始创建表单         
%    >         
         
         
         
  
      我们借助会话变量FirstTimeToPage检查用户是否是第一次访问当前页面。如果不是第一次&#xff08;即Session     
(    "FirstTimeToPage    ")包含某个值&#xff09;&#xff0c;那么我们就清除会话变量的值&#xff0c;然后把用户重新定向到一个开始页面。这样&#xff0c;当表单     
提交时&#xff08;此时SompePage.asp被打开&#xff09;&#xff0c;我们必须赋予FirstTimeToPage一个值。即&#xff0c;在SomePage.asp中我们需要加上下面     
的代码&#xff1a;         
  
Session(    "FirstTimeToPage    ")    &#61;        "NO    "         
  
      这样&#xff0c;已经打开SomePage.asp的用户如果点击后退按钮&#xff0c;浏览器将重新请求服务器下载页面&#xff0c;服务器检查到Session     
(    "FirstTimeToPage    ")包含了一个值&#xff0c;于是就清除Session(    "FirstTimeToPage    ")&#xff0c;并把用户重定向到其他页面。当然&#xff0c;所有     
这一切都需要用户启用了COOKIE&#xff0c;否则会话变量将是无效的。&#xff08;有关该问题的更多说明&#xff0c;请参见For    session    variables         
to    work,    must    the    Web    visitor    have    COOKIEs    enabled?&#xff09;         
      另外&#xff0c;我们也可以用客户端代码使浏览器不再缓存Web页面&#xff1a;         
  
         
         
         
         
         
         
  
      如果使用上面的方法强制浏览器不再缓存Web页面&#xff0c;必须注意以下几点&#xff1a;         
只有在使用安全连接时“Pragma:    no-cache”才防止浏览器缓存页面。对于不受安全保护的页面&#xff0c;“Pragma:    no-cache”     
被视为与“Expires:    -1”相同&#xff0c;此时浏览器仍旧缓存页面&#xff0c;但把页面标记为立即过期。         
在IE    4或5中&#xff0c;“Cache-Control”META    HTTP-EQUIV标记将被忽略&#xff0c;不起作用。         
      在实际应用中我们可以加上所有这些代码。然而&#xff0c;由于这种方法不能适用于所有的浏览器&#xff0c;所以是不推荐使用的。但     
如果是在Intranet环境下&#xff0c;管理员可以控制用户使用哪种浏览器&#xff0c;我想还是有人会使用这种方法。         
  
三、其他方法         
      接下来我们要讨论的方法以后退按钮本身为中心&#xff0c;而不是浏览器缓存。这儿有一篇文章Rewiring    the    Back    Button很     
值得参考。不过我注意到&#xff0c;如果使用这种方法&#xff0c;虽然用户点击一下后退按钮时他不会看到以前输入数据的页面&#xff0c;但只要点     
击两次就可以&#xff0c;这可不是我们希望的效果&#xff0c;因为很多时候&#xff0c;固执的用户总是能够找到绕过预防措施的办法。         
      另外一种禁用后退按钮的办法是用客户端Javascript打开一个没有工具条的窗口&#xff0c;这使得用户很难返回前一页面&#xff0c;但     
不是不可能。一种更安全但相当恼人的方法是&#xff0c;当表单提交时打开一个新的窗口&#xff0c;与此同时关闭表单所在的窗口。但我觉     
得这种方法不值得认真考虑&#xff0c;因为我们总不能让用户每提交一个表单就打开一个新窗口。         
      那么&#xff0c;在那个我们不想让用户返回的页面是否也可以加入Javascript代码呢&#xff1f;在这个页面中加入的Javascript代码可     
用来产生点击前进按钮的效果&#xff0c;这样也就抵消了用户点击后退按钮所产生的动作。用于实现该功能的Javascript代码如下     
所示&#xff1a;         
  
         
  
      同样地&#xff0c;这种方法虽然有效&#xff0c;但距离“最好的方法”还差得很远。后来我又看到有人建议用location.replace从一个     
页面转到另一个页面。这种方法的原理是&#xff0c;用新页面的URL替换当前的历史纪录&#xff0c;这样浏览历史记录中就只有一个页面&#xff0c;后     
退按钮永远不会变为可用。我想这可能正是许多人所寻求的方法&#xff0c;但这种方法仍旧不是任何情况下的最好方法。使用这种     
方法的实例如下所示&#xff1a;         
  
  
event.returnValue&#61;false;        "    >         
  
禁止后退到本页面的链接   
         
      禁止后退到本页面的链接&#xff01;         
      这种方法的缺点在于&#xff1a;简单地运用Response.Redirect将不再有效&#xff0c;这是因为每次用户从一个页面转到另一个页面&#xff0c;     
我们都必须用客户端代码清除location.history。另外还要注意&#xff0c;这种方法清除的是最后一个访问历史记录&#xff0c;而不是全部     
的访问记录。         
      点击上面的链接&#xff0c;你将打开一个简单的HTML页面。再点击后退按钮&#xff0c;你可以看到这时打开的不是本页面&#xff0c;而是本页面     
之前的页面&#xff01;&#xff08;当然&#xff0c;你必须在浏览器中启用了客户端Javascript代码。&#xff09;         
      经过一番仔细的寻寻觅觅之后&#xff0c;我发现仍旧无法找出真正能够完全禁用浏览器后退按钮的办法。所有这里介绍的方法     
都能够在不同程度上、以不同的方式禁止用户返回前一页面&#xff0c;但它们都有各自的局限。由于不存在能够完全禁用后退按钮     
的方法&#xff0c;所以最好的方案应该是&#xff1a;混合运用客户端脚本和服务器端脚本。         
  
---------------------------------------------------------------     
  
你指的“后退”、“向前”到底是哪个键&#xff0c;不过不管哪个键&#xff0c;你都可以参见以下的方法实现&#xff1a;     
用js,代码如下    上面的8为backspace的键码     
  
你可以用下面的方法获得所需键码&#xff08;键码显示在状态栏中&#xff09;     


转:https://www.cnblogs.com/xuxu7325/archive/2007/01/19/624930.html



推荐阅读
  • Android实战——jsoup实现网络爬虫,糗事百科项目的起步
    本文介绍了Android实战中使用jsoup实现网络爬虫的方法,以糗事百科项目为例。对于初学者来说,数据源的缺乏是做项目的最大烦恼之一。本文讲述了如何使用网络爬虫获取数据,并以糗事百科作为练手项目。同时,提到了使用jsoup需要结合前端基础知识,以及如果学过JS的话可以更轻松地使用该框架。 ... [详细]
  • 本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
  • Java序列化对象传给PHP的方法及原理解析
    本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ... [详细]
  • 个人学习使用:谨慎参考1Client类importcom.thoughtworks.gauge.Step;importcom.thoughtworks.gauge.T ... [详细]
  • Java中包装类的设计原因以及操作方法
    本文主要介绍了Java中设计包装类的原因以及操作方法。在Java中,除了对象类型,还有八大基本类型,为了将基本类型转换成对象,Java引入了包装类。文章通过介绍包装类的定义和实现,解答了为什么需要包装类的问题,并提供了简单易用的操作方法。通过本文的学习,读者可以更好地理解和应用Java中的包装类。 ... [详细]
  • Spring常用注解(绝对经典),全靠这份Java知识点PDF大全
    本文介绍了Spring常用注解和注入bean的注解,包括@Bean、@Autowired、@Inject等,同时提供了一个Java知识点PDF大全的资源链接。其中详细介绍了ColorFactoryBean的使用,以及@Autowired和@Inject的区别和用法。此外,还提到了@Required属性的配置和使用。 ... [详细]
  • MySQL中的MVVC多版本并发控制机制的应用及实现
    本文介绍了MySQL中MVCC的应用及实现机制。MVCC是一种提高并发性能的技术,通过对事务内读取的内存进行处理,避免写操作堵塞读操作的并发问题。与其他数据库系统的MVCC实现机制不尽相同,MySQL的MVCC是在undolog中实现的。通过undolog可以找回数据的历史版本,提供给用户读取或在回滚时覆盖数据页上的数据。MySQL的大多数事务型存储引擎都实现了MVCC,但各自的实现机制有所不同。 ... [详细]
  • JavaWeb中读取文件资源的路径问题及解决方法
    在JavaWeb开发中,读取文件资源的路径是一个常见的问题。本文介绍了使用绝对路径和相对路径两种方法来解决这个问题,并给出了相应的代码示例。同时,还讨论了使用绝对路径的优缺点,以及如何正确使用相对路径来读取文件。通过本文的学习,读者可以掌握在JavaWeb中正确找到和读取文件资源的方法。 ... [详细]
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • Java实战之电影在线观看系统的实现
    本文介绍了Java实战之电影在线观看系统的实现过程。首先对项目进行了简述,然后展示了系统的效果图。接着介绍了系统的核心代码,包括后台用户管理控制器、电影管理控制器和前台电影控制器。最后对项目的环境配置和使用的技术进行了说明,包括JSP、Spring、SpringMVC、MyBatis、html、css、JavaScript、JQuery、Ajax、layui和maven等。 ... [详细]
  • springmvc学习笔记(十):控制器业务方法中通过注解实现封装Javabean接收表单提交的数据
    本文介绍了在springmvc学习笔记系列的第十篇中,控制器的业务方法中如何通过注解实现封装Javabean来接收表单提交的数据。同时还讨论了当有多个注册表单且字段完全相同时,如何将其交给同一个控制器处理。 ... [详细]
  • 如何在php文件中添加图片?
    本文详细解答了如何在php文件中添加图片的问题,包括插入图片的代码、使用PHPword在载入模板中插入图片的方法,以及使用gd库生成不同类型的图像文件的示例。同时还介绍了如何生成一个正方形文件的步骤。希望对大家有所帮助。 ... [详细]
  • MySQL数据库锁机制及其应用(数据库锁的概念)
    本文介绍了MySQL数据库锁机制及其应用。数据库锁是计算机协调多个进程或线程并发访问某一资源的机制,在数据库中,数据是一种供许多用户共享的资源,如何保证数据并发访问的一致性和有效性是数据库必须解决的问题。MySQL的锁机制相对简单,不同的存储引擎支持不同的锁机制,主要包括表级锁、行级锁和页面锁。本文详细介绍了MySQL表级锁的锁模式和特点,以及行级锁和页面锁的特点和应用场景。同时还讨论了锁冲突对数据库并发访问性能的影响。 ... [详细]
  • Hibernate延迟加载深入分析-集合属性的延迟加载策略
    本文深入分析了Hibernate延迟加载的机制,特别是集合属性的延迟加载策略。通过延迟加载,可以降低系统的内存开销,提高Hibernate的运行性能。对于集合属性,推荐使用延迟加载策略,即在系统需要使用集合属性时才从数据库装载关联的数据,避免一次加载所有集合属性导致性能下降。 ... [详细]
author-avatar
小鱼儿太疯癫
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有