禁用浏览器的后退按钮
首先,概述
有很多人问如何禁用浏览器的后退按钮或者如何防止用户单击后退按钮返回您以前看到的页面我访问了许多网站,并参考了这些网站的各种实现。如果你经常访问ASP编程站点,你可能看到了本文中描述的一些内容。本文的任务是向你介绍所有可能的方法,并找出最好的方法!
两。禁止缓存
在我发现的许多解决方案中,有一个建议禁止页面缓存:
响应=缓冲区=真
response.expiresabsolute =现在()- 1
响应。过期= 0
response.cachecontrol = 不缓存
%>
这个方法很有效!它迫使浏览器访问服务器下载页面,而不是从缓存中读取页面。使用这种方法时,程序员的主要任务是创建一个会话级变量,它决定了用户是否仍然可以看到页面不适合访问通过后退按钮,因为浏览器不较长的缓存这个页面,当用户点击后退按钮,浏览器将重新下载页面。这时,程序可以检查会话变量,并查看是否允许用户打开页面。
例如,假设我们有以下表单:
响应=缓冲区=真
response.expiresabsolute =现在()- 1
响应。过期= 0
response.cachecontrol = 不缓存
如果Len(Session(firsttimetopage ))> 0
用户可以访问当前页面,现在正在返回访问权限。
清除会话变量并将用户重定向到登录页面。
会议(firsttimetopage )=
响应。
反应结束
最后如果
如果程序在这里运行,它显示用户可以查看当前页面
下面的表单开始创建窗体
%>
我们检查用户是否有使用会话变量firsttimetopage第一次到当前页面的访问。如果不是第一次(即会话(firsttimetopage)包含的值),我们会删除会话变量的值,并将用户重定向到首页,这这样,当提交表单时(此时sompepage.asp打开),我们已经向firsttimetopage给一个值,在SomePage.asp我们需要添加以下代码:
会议(firsttimetopage )=没有
这样的somepage.asp如果用户单击后退按钮打开,浏览器将请求一个新的服务器下载页面,检查服务器的会话(firsttimetopage )包含一个值,然后清除会话(firsttimetopage ),并将用户重定向到另一页。当然,所有这一切都需要用户启用Cookie,否则会话变量将无效。
此外,我们还可以使用客户端代码使浏览器不再缓存Web页面:
如果使用上述方法强制浏览器停止缓存Web页面,则必须注意以下几点:
杂注:无缓存只能阻止浏览器缓存页面只有当安全连接使用。网页不安全,语用保护:无缓存是相同的到期:1。此时,浏览器仍然缓存页面,但mark pages却立即过时了。
在IE 4或5,缓存controlmeta HTTP-EQUIV标记将被忽略和不工作。
在实际应用中,我们可以添加所有这些代码,但是,由于这种方法不适用于所有浏览器,所以不推荐使用,但如果是在Intranet环境中,管理员可以控制用户使用的浏览器,我认为有人会使用这种方法。
三。其他的方法
我们要讨论的下一个方法是返回按钮本身为中心,而不是浏览器缓存。这里是一篇重新返回按钮,很值得参考。但我注意到,如果使用这种方法,虽然用户单击后退按钮,他会看不到网页,用于输入数据,但只要点击两次,这不是我们想要的。
其效果是,因为在许多情况下,顽固的用户总能找到绕过防范措施的方法。
另一种方式来禁用后退按钮打开一个窗口没有工具栏使用客户端的Javascript代码,这使得用户难以返回上一页,但并不是不可能的。一个更安全更恼人的方法是打开一个新窗口提交表单时,同时关闭窗口的形式的位置。但我不认为这种方法是值得认真考虑的因为我
你不能让用户每次提交表单时打开一个新窗口。
那么,是否有可能向我们不希望用户返回的页面添加Javascript代码呢Javascript代码添加到该页可以用于生成点击前进按钮的效果,也可以减少由用户单击后退按钮产生的作用。Javascript代码来实现这个功能如下:
用同样的方法,这种方法是有效的,但它是迄今为止最好的方式。然后我看到有人建议从一个页面到另一个页面,这个方法location.replace.the原则是随着新页面的URL替换当前的历史,所以在浏览历史中只有一个页面,和后退按钮不会成为可用的。我想这可能是很多人都在寻找的方式,但它仍然不是在任何情况下,最好的处理方式。使用这种方法的一个例子如下:
不返回这个页面的链接
尝试以下链接:
没有链接回到这个页面!
这种方法的缺点是简单地使用响应,重定向将不再有效。这是因为每一个用户从一个页面到另一个,我们必须使用客户端代码清晰location.history.it也注意此方法清除最近访问历史重要,不是所有的访问记录。
点击上面的链接,你会打开一个简单的HTML页面。再次点击后退按钮,你可以看到这不是页面,而是页面前面的页面!(当然,您必须在浏览器中启用客户端Javascript代码)。
仔细搜索后,我还是发现很难找到真正的可以完全禁用browserbackbutton方式,这里介绍的方法可以禁止用户在不同程度上返回到前一页,以不同的方式,但他们有自己的局限性,因为没有办法完全禁用后退按钮,这最好的解决方案应该是:混合客户端脚本和服务器端脚本。