当前位置: 首页 > 面试题库 >

使用JavaScript禁用F5和浏览器刷新

杜哲彦
2023-03-14
问题内容

我想使用JavaScript禁用浏览器刷新。

当前,我正在使用,window.onbeforeunload并且我不希望在用户刷新浏览器时调用它。

最好的方法是什么?


问题答案:

更新
最近的评论声称这在新的Chrome中不起作用…如jsFiddle所示,并在我的个人网站上进行了测试,此方法从Chrome版本开始仍然有效26.0.1410.64m

顺便说一下,这在jQuery中非常容易:

// slight update to account for browsers not supporting e.which
function disableF5(e) { if ((e.which || e.keyCode) == 116) e.preventDefault(); };
// To disable f5
    /* jQuery < 1.7 */
$(document).bind("keydown", disableF5);
/* OR jQuery >= 1.7 */
$(document).on("keydown", disableF5);

// To re-enable f5
    /* jQuery < 1.7 */
$(document).unbind("keydown", disableF5);
/* OR jQuery >= 1.7 */
$(document).off("keydown", disableF5);

附带说明:这只会禁用键盘上的f5按钮。要真正禁用刷新,您必须使用服务器端脚本来检查页面状态更改。不能说我真的不知道怎么做,因为我还没有做。

在我工作的软件站点上,我们将我的disableF5函数与Codeigniter的会话数据结合使用。例如,有一个锁定按钮将锁定屏幕并提示密码对话框。函数“disableF5”快速简便,可防止该按钮执行任何操作。但是,为防止鼠标单击刷新按钮,发生了一些事情。

  1. 单击锁定时,用户会话数据具有一个称为“ locked”的变量,该变量变为TRUE
  2. 单击刷新按钮时,在母版页加载方法中,将检查会话数据是否为“锁定”,如果为TRUE,则我们简单地不允许重定向,并且无论请求的目标是什么,页面都不会更改

提示:
尝试使用服务器设置的cookie(例如PHP$_SESSION或什至.Net的cookie)Response.Cookies来维护客户端在站点中的“位置”。这是我使用CI的Session类所做的香草的方法。最大的不同是CI在您的数据库中使用了Table,而这些 常规
方法在客户端中存储了可编辑的cookie。缺点是,用户可以清除其Cookie。



 类似资料:
  • 问题内容: 如何禁用浏览器的“后退”按钮(跨浏览器)? 问题答案: 这个问题是非常相似,这一个 … 您需要强制缓存过期才能正常工作。将以下代码放在页面代码后面。

  • 问题内容: 执行登录功能后,“在树中查看结果”中的响应数据显示如下: 您的浏览器似乎禁用了JavaScript。 您必须在浏览器中启用JavaScript才能使用本网站的功能。 注意:已启用Firefox中的JavaScript,并且我已使用“测试脚本记录器”来记录浏览器会话。 问题答案: 从JMeter项目主页 JMeter不是浏览器。 就Web服务和远程服务而言,JMeter看起来像一个浏览器

  • 本文向大家介绍JavaScript监听和禁用浏览器回车事件实例,包括了JavaScript监听和禁用浏览器回车事件实例的使用技巧和注意事项,需要的朋友参考一下 js监听浏览器回车事件,可以支持ie6+,火狐,谷歌等浏览器。 那么,如何捕捉指定DOM对象的回车事件?这里以input标签为例说明: 那么,js如何禁用浏览器回车事件?我们知道,在HTML表单区域内,按回车时浏览器的默认行为是自动提交表单

  • 问题内容: 我正在通过XAMPP开发基于Wordpress源代码的网站。有时,我更改了CSS代码,脚本或其他内容,但我注意到我的浏览器需要花费一些时间来应用修改。这导致我使用多个浏览器刷新一个浏览器,如果不应用新样式,则尝试第二个浏览器,而且总是这样。 有什么办法可以避免这个问题?有时我在更改代码时没有注意到先前的修改。 问题答案: 一般解决方案按Ctrl+ F5(或Ctrl+ Shift+ R)

  • 问题内容: 使用Javascript或AngularJS控制或禁用浏览器后退按钮 在这里我不是在问一个问题,但我想展示一个解决方案,以解决您使用AngularJS甚至Javascript时如何禁用和控制浏览器的后退按钮 问题答案: 如果您仅使用Javascript,则可以通过以下链接检查如何禁用“后退按钮”: http://jordanhollinger.com/2012/06/08/disabl

  • 有没有办法禁用某些现代浏览器(Chrome和Safari)在刷新页面时记住滚动位置的行为?