如何禁止浏览器使用后退按钮功能
本文介绍了禁用浏览器后退按钮的各种方法,并分析了各自的优缺点和适用场合。首先,概述
有很多人问如何禁用浏览器的后退按钮或者如何防止用户单击后退按钮返回您以前看到的页面在ASP论坛中,这是最被问到的问题之一。不幸的是,答案很简单:我们不能禁用浏览器的后退按钮。
起初我觉得难以置信,有人想禁用浏览器的后退按钮。后来,我看到有这么多人想禁用后退按钮,我松了一口气。因为默认情况下,用户可以在提交表单后使用后退按钮返回表单页面(而不是使用编辑按钮!)然后再次编辑并提交表单以向数据库插入一个新记录,这是我们不希望看到的。
所以我决定寻找一个避免这种情况的方法。我访问了很多网站并提到了这些网站的各种实现。如果你经常访问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的会话变量,否则将被视为无效。(在这个问题上,更多的指令查看会话变量的工作,一定的网站访问者已启用Cookie)
此外,我们还可以使用客户端代码使浏览器不再缓存Web页面:
如果我们用上述方法迫使浏览器停止缓存的网页,我们必须注意以下几点:仅当使用安全连接,杂注:无缓存防止浏览器缓存页面,页面是不是安全,语用的保护:无缓存是相同的到期:1。在这个时候,浏览器仍然缓存页面,但mark pages立即过时。在IE 4或5,缓存controlmeta HTTP-EQUIV标记将被忽略和不工作。
在实际应用中,我们可以添加所有这些代码,但是,由于这种方法不适用于所有浏览器,所以不推荐使用,但如果是在Intranet环境中,管理员可以控制用户使用的浏览器,我认为有人会使用这种方法。
三。其他的方法
我们要讨论的下一个方法是返回按钮本身为中心,而不是浏览器缓存。这里是一篇重新返回按钮,很值得参考。但我注意到,如果你使用这个方法,虽然他不会看到用户点击一个先前输入的数据页的返回按钮,但只要你可以点击两次,这不是我们想要的,因为大部分的时间,用户可以随时找到绕过预防措施的固执的方式。
另一种方式来禁用后退按钮打开一个窗口没有工具栏使用客户端的Javascript代码,这使得用户难以返回上一页,但并不是不可能的。一个更安全更恼人的方法是打开一个新窗口提交表单时,同时关闭窗口的形式的位置。但我不认为这种方法是值得考虑的,因为我们不能让用户打开一个新窗口,他们每次提交表单。
那么,是否有可能向我们不希望用户返回的页面添加Javascript代码呢Javascript代码添加到该页可以用于生成点击前进按钮的效果,也可以减少由用户单击后退按钮产生的作用。Javascript代码来实现这个功能如下:
<!——
Javascript:window.history.forward(1);
用同样的方法,这种方法是有效的,但它是迄今为止最好的方式。然后我看到有人建议从一个页面到另一个页面,这个方法location.replace.the原则是随着新页面的URL替换当前的历史,所以在浏览历史中只有一个页面,和后退按钮不会成为可用的。我想这可能是很多人都在寻找的方式,但它仍然不是在任何情况下,最好的处理方式。使用这种方法的一个例子如下:
不返回这个页面的链接
没有链接回到这个页面!
这种方法的缺点是简单地使用响应,重定向将不再有效。这是因为每一个用户从一个页面到另一个,我们必须使用客户端代码清晰location.history.it也注意此方法清除上次访问历史上重要的,不是它的全部。
访问记录。
点击上面的链接,你会打开一个简单的HTML页面。再次点击后退按钮,你可以看到这不是页面,而是页面前面的页面!(当然,您必须在浏览器中启用客户端Javascript代码)。
U3000 U3000
仔细搜索后,我还是发现很难找到真正的可以完全禁用browserbackbutton方式,这里介绍的方法可以禁止用户在不同程度上返回到前一页,以不同的方式,但他们有自己的局限性,因为没有办法完全禁用后退按钮,这最好的解决方案应该是:混合客户端脚本和服务器端脚本。