我有一个链接
<a href="new link">click me</a>
当用户单击“单击我”链接时,新链接页面将被重定向并在服务器端执行某些操作。问题是,如果用户单击浏览器上的后退按钮,它将返回到旧链接。如果用户点击链接“点击我”,新的链接页面将被打开,服务器端的处理将再次进行。如何预防这种情况?那就是即使用户回到旧页面,新的链接也不能再点击了
在链接上生成一个唯一的 id,例如therequest.do?id=1234
,并记录1234
到数据库中,这样请求就不能再次运行。
mypage.do
,服务器生成 id1234
并将日志作为未处理的数据库。therequest.do?id=1234
1234
为已处理。1234
已处理,因此在屏幕上生成错误消息:request has already been processed
。您可以尝试创建一个新窗口,这将阻止最终用户返回,但是,您需要创建已访问状态以使按钮在 CSS 中消失。
<a href="new link" target="_blank">click me</a>
除此之外,在纯 HTML 中,没有办法阻止用户点击标准链接上的后退按钮。
您可以使用 Javascript 执行此操作。这是显示一种方法的示例代码:
<html>
<body>
<a href="#" onclick="f();">click me</a>
<script>
var first = true;
function f() {
if ( first ) {
first = false;
window.open('http://www.google.com');
}
}
</script>
</body>
</html>
或者,您可以摆脱全局状态变量,并在单击链接后禁用或隐藏链接。