我想使用 JavaScript 禁用浏览器刷新。
目前,我正在使用window.onbeforeunload
并且不希望在用户刷新浏览器时调用它。
最好的方法是什么?
我想使用 JavaScript 禁用浏览器刷新。
目前,我正在使用window.onbeforeunload
并且不希望在用户刷新浏览器时调用它。
最好的方法是什么?
更新最近的评论声称这在新的 Chrome 中不起作用......如 jsFiddle 所示,并在我的个人网站上进行了测试,此方法从 Chrome 版本开始仍然有效26.0.1410.64 m
顺便说一下,这在 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 的Response.Cookies
,来维护您的客户端在您的站点中的“位置”。这是比较香草办法做我与CI的Session类做。最大的不同之处在于CI使用表中您的数据库,而这些香草方法保存在客户端可编辑的cookie。但缺点是用户可以清除其 cookie。
var ctrlKeyDown = false;
$(document).ready(function(){
$(document).on("keydown", keydown);
$(document).on("keyup", keyup);
});
function keydown(e) {
if ((e.which || e.keyCode) == 116 || ((e.which || e.keyCode) == 82 && ctrlKeyDown)) {
// Pressing F5 or Ctrl+R
e.preventDefault();
} else if ((e.which || e.keyCode) == 17) {
// Pressing only Ctrl
ctrlKeyDown = true;
}
};
function keyup(e){
// Key up Ctrl
if ((e.which || e.keyCode) == 17)
ctrlKeyDown = false;
};
从恩里克网站上发布:
window.history.forward(1);
document.attachEvent("onkeydown", my_onkeydown_handler);
function my_onkeydown_handler() {
switch (event.keyCode) {
case 116 : // 'F5'
event.returnValue = false;
event.keyCode = 0;
window.status = "We have disabled F5";
break;
}
}
mac cmd+r, cmd+shift+r 需要。
function disableF5(e) { if ((e.which || e.keyCode) == 116 || (e.which || e.keyCode) == 82) e.preventDefault(); };
$(document).ready(function(){
$(document).on("keydown", disableF5);
});
将此用于现代浏览器:
function my_onkeydown_handler( event ) {
switch (event.keyCode) {
case 116 : // 'F5'
event.preventDefault();
event.keyCode = 0;
window.status = "F5 disabled";
break;
}
}
document.addEventListener("keydown", my_onkeydown_handler);