我想使用JavaScript禁用浏览器刷新。
当前,我正在使用,window.onbeforeunload并且我不希望在用户刷新浏览器时调用它。
window.onbeforeunload
最好的方法是什么?
更新 最近的评论声称这在新的Chrome中不起作用…如jsFiddle所示,并在我的个人网站上进行了测试,此方法从Chrome版本开始仍然有效26.0.1410.64m
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”快速简便,可防止该按钮执行任何操作。但是,为防止鼠标单击刷新按钮,发生了一些事情。
提示: 尝试使用服务器设置的cookie(例如PHP$_SESSION或什至.Net的cookie)Response.Cookies来维护客户端在站点中的“位置”。这是我使用CI的Session类所做的香草的方法。最大的不同是CI在您的数据库中使用了Table,而这些 常规 方法在客户端中存储了可编辑的cookie。缺点是,用户可以清除其Cookie。
$_SESSION
Response.Cookies