Javascript 我可以在我的webapp中禁用浏览器刷新吗?

Javascript 我可以在我的webapp中禁用浏览器刷新吗?,javascript,html,browser,webbrowser-control,Javascript,Html,Browser,Webbrowser Control,我想在我的网站上禁用刷新。有没有办法在网页中禁用F5、Ctrl-R或重新加载?没有,没有这种方法。您可以警告用户不要刷新。不,没有办法禁用它 如果您试图避免出现“是否要再次提交此操作?”对话框,请使用。在某些浏览器上可能会有一些技巧,但没有什么可以保证它们无法刷新页面。浏览器和web标准是完全开放的,因此用户可以轻松地修改浏览器,以解决您实现的任何问题 如果刷新会对用户体验产生负面影响,最好给他们一个文本警告 如果这是为了修复一个bug(比如缺少幂等性),那么您应该考虑修复这个bug。我有一个建

我想在我的网站上禁用刷新。有没有办法在网页中禁用F5、Ctrl-R或重新加载?

没有,没有这种方法。您可以警告用户不要刷新。不,没有办法禁用它


如果您试图避免出现“是否要再次提交此操作?”对话框,请使用。

在某些浏览器上可能会有一些技巧,但没有什么可以保证它们无法刷新页面。浏览器和web标准是完全开放的,因此用户可以轻松地修改浏览器,以解决您实现的任何问题

如果刷新会对用户体验产生负面影响,最好给他们一个文本警告


如果这是为了修复一个bug(比如缺少幂等性),那么您应该考虑修复这个bug。

我有一个建议。本页中有一个答案框

(以下是您的答案标签)

  • 在其中键入一些文本
  • 然后刷新此页面
刷新时会显示一些警告消息,我建议您显示类似的警告消息,而不是禁用刷新功能

window.onbeforeunload = function () {return false;}
这将禁用离开页面,除非用户确认,而不仅仅是刷新,因此您必须自己编写代码才能使其正常工作


你从来没有说过你在用它做什么,所以我就不说了。

我不知道如何禁用刷新单击(我自己仍然需要这个) 除了使用服务器端脚本停止“重定向” 但是,我知道有一种非常简单的jQuery可以禁用F5:


每次进入页面时检查cookie。 如果cookie在那里,那么您就知道进行了刷新


如果cookie不存在,请创建一个持续时间为零的cookie(仅在浏览器仍打开之前存在)

有一种方法可以通过按F5防止用户刷新页面。在您的身体标签中尝试以下代码:

<body onkeydown="return (event.keyCode != 116)">
<body onkeydown="return (event.keyCode == 154)">

如果要禁用ctrl+f5、ctrl+R、f5、backspace,则可以使用此简单代码。这段代码在Mozila和Chrome中都可以使用。在您的body标签中添加以下代码:

<body onkeydown="return (event.keyCode != 116)">
<body onkeydown="return (event.keyCode == 154)">


每次我听到开发人员提出这种可能性,都是因为他们发现刷新浏览器会破坏他们的代码。但只有当他们的代码忽略或覆盖了Web浏览器的基本导航模型——他们开发的平台——时,这才是真正可能的。答案是不要进一步破坏模型。这是为了修复你正在做的任何会破坏正常的、预期的Web行为的事情。如果页面包含任何计时器,则需要禁用刷新。Else计时器将从头开始。@Thahakp bigmattyh的评论建议如何继续:在启动计时器时使用sessionStorage/localStorage存储时间戳,使用默认开始时间减去经过的时间初始化计时器,在计时器触发时删除存储的值。否则,imho,您接受为了减轻您的编程不便而可能损害用户体验。@MattHowell这里不是这样,重载不会破坏我的代码,它运行良好并执行我所期望的。但是通过运行一个函数来拒绝重新加载会使我的小应用程序上的用户体验显著提高,但是你如何定制消息呢?“我很惊讶每个人都说你做不到这一点”我认为每个人都是对的。您可以显示确认模式,但无论如何都不能禁用页面重新加载。