使用JavaScript禁用F5和浏览器刷新
我想使用JavaScript禁用浏览器刷新。
当前,我正在使用,window.onbeforeunload
并且我不希望在用户刷新浏览器时调用它。
最好的方法是什么?
回答:
更新
最近的评论声称这在新的Chrome中不起作用…如jsFiddle所示,并在我的个人网站上进行了测试,此方法从Chrome版本开始仍然有效26.0.1410.64m
顺便说一下,这在jQuery中非常容易:
// slight update to account for browsers not supporting e.whichfunction 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”快速简便,可防止该按钮执行任何操作。但是,为防止鼠标单击刷新按钮,发生了一些事情。
- 单击锁定时,用户会话数据具有一个称为“ locked”的变量,该变量变为TRUE
- 单击刷新按钮时,在母版页加载方法中,将检查会话数据是否为“锁定”,如果为TRUE,则我们简单地不允许重定向,并且无论请求的目标是什么,页面都不会更改
尝试使用服务器设置的cookie(例如PHP$_SESSION
或什至.Net的cookie)Response.Cookies
来维护客户端在站点中的“位置”。这是我使用CI的Session类所做的香草的方法。最大的不同是CI在您的数据库中使用了Table,而这些 常规
方法在客户端中存储了可编辑的cookie。缺点是,用户可以清除其Cookie。
以上是 使用JavaScript禁用F5和浏览器刷新 的全部内容, 来源链接: utcz.com/qa/429305.html