使用jQuery/Javascript防止任何形式的页面刷新

2022-08-30 05:15:34

一旦用户进入我的页面,我就不希望他刷新页面。

  1. 任何时候,用户都会点击或刷新顶部的按钮。他应该得到一个警报说F5

    您无法刷新页面。

  2. 此外,如果用户打开一个新选项卡并尝试访问上一个选项卡中的相同URL,他应该会收到警报

    您无法在 2 个选项卡中打开同一页面

无论如何,我可以使用JavaScript或jQuery来做到这一点?第一点非常重要。


答案 1

#1 可以通过 实现。window.onbeforeunload

例如:

<script type="text/javascript">
    window.onbeforeunload = function() {
        return "Dude, are you sure you want to leave? Think of the kittens!";
    }
</script>

系统将提示用户该消息,并为用户提供一个选项,以留在页面上或继续他们的前进。这种情况正变得越来越普遍。如果在键入帖子时尝试离开页面,则 Stack Overflow 会执行此操作。您无法完全阻止用户重新加载,但如果他们这样做,您可以使其听起来非常可怕。

#2或多或少是不可能的。即使您跟踪了会话和用户登录,您仍然无法保证正确检测第二个选项卡。例如,也许我打开了一个窗口,然后关闭它。现在我打开一个新窗口。您可能会将其作为第二个选项卡检测到,即使我已经关闭了第一个选项卡。现在,您的用户无法访问第一个窗口,因为他们关闭了它,并且他们无法访问第二个窗口,因为您拒绝了他们。

事实上,我的银行的在线系统非常努力地做#2,上面描述的情况一直在发生。我通常必须等到服务器端会话过期才能再次使用银行系统。


答案 2

您无法阻止用户刷新,也不应该真正尝试。您应该回到为什么需要此解决方案,这里的根本问题是什么?从那里开始,找到一种不同的方法来解决问题。也许你是否详细说明了为什么你认为你需要这样做,这将有助于找到这样的解决方案。

打破基本的浏览器功能从来都不是一个好主意,超过99.999999999%的互联网使用F5工作和刷新,这是用户的期望,你不应该打破。