禁用 PHP 页面上的重新加载和 F5 键

5
我正在我的php页面上使用一个计时器,但是当有人刷新页面时,计时器会重新开始。 我想禁用在我的php页面上的F5或重新加载选项。
提前感谢。

3
这不是(也不应该是)可能的。 - Maerlyn
当我的页面重新加载时,我该如何防止计时器从头开始启动? - Ankit Agrawal
onbeforeunload 中保存计时器的状态,并在 onload 中恢复它。 - Maerlyn
请提供一些示例。 - Ankit Agrawal
最好的方法可能是将计时器的当前值存储在 cookie 中,并在每个计时器滴答时进行检查。但是,您无法防止用户在他们的浏览器中重新加载/刷新页面。 - Marc B
3个回答

9
我测试了它,它有效。
function disable_f5(e)
{
  if ((e.which || e.keyCode) == 116)
  {
      e.preventDefault();
  }
}

$(document).ready(function(){
    $(document).bind("keydown", disable_f5);    
});

1
是的,它可以禁用F5,但CTRL + R和右键->单击重新加载图标呢? - Blackjack

3

不可能 - 这种行为是由最终用户控制的,这也是正确的。

你可以做的最接近的事情是在窗口关闭或刷新时显示警告,用户可以决定听从您的警告并继续使用当前页面,还是忽略您的请求并关闭/刷新页面。

请参见: Alert when browser window closed accidentally


此外,您的页面是由PHP生成的这一事实并不重要。PHP(一种服务器端脚本语言)从服务器生成文本输出,通常输出客户端语言,如HTML和Javascript。在这里重要的是来自服务器的输出,而不是它是如何生成的。希望这可以帮助您! - JoLoCo
1
有没有其他选项可以防止页面重新加载时浪费我的时间,从而重新开始? - Ankit Agrawal
2
你可以将计时器信息存储在会话cookie中,这样如果用户刷新页面(甚至离开再回来),计时器仍然存在。但那又是另外一个问题了! - JoLoCo

2

禁用此类浏览器功能是不可能的。如果有一个页面禁用了您的F5键,您会喜欢吗?我怀疑。如果您想实现某种安全性,请考虑采用适当的服务器端验证方法。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接