一旦用户在我的页面上,我不希望他刷新页面。
>任何时候,用户点击F5或刷新顶部的按钮。他应该得到一个警报
You cannot refresh the page.
>如果用户打开一个新的选项卡,并尝试访问相同的URL在prev tab,他应该得到一个警报
You cannot open same page in 2 tabs
无论如何,我可以使用JavaScript或jQuery做到这一点?第一点真的很重要。
解决方法
#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,并且上述情况一直发生。我通常必须等到服务器端会话过期后才能再次使用银行系统。