js阻止浏览器刷新,以防误操作丢失数据

//禁用回退
window.history.forward(1); history.pushState(null, null, document.URL); window.addEventListener('popstate', function () { history.pushState(null, null, document.URL); }); //按键判断是否点了刷新相关的按键 document.onkeydown = function(e) { console.log(e.code); console.log(e.ctrlKey); e = e||window.event; console.log(e.code); console.log(e.ctrlKey); var k = e.keyCode; if ((e.ctrlkey === true && k === 82) || (k === 116) || (e.ctrlKey === true && k === 116) || k === 114) { e.code = 0; alert("当前页面不能刷新!"); //e.returnValue = false; e.preventDefault(); e.cancelBubble = true; return false; } if (k === 8) { alert("不能返回或后退!"); e.code = 0; // e.returnValue = false; e.preventDefault(); return false; } //屏蔽 Ctrl+n验证可以实现效果 if (e.ctrlKey && k === 78) { e.code = 0; // e.returnValue = false; e.preventDefault(); e.cancelBubble = true; return false; } //屏蔽F11验证可以实现效果 if (k === 122) { e.code = 0; e.preventDefault(); e.cancelBubble = true; return false; } //屏蔽 shift+F10 验证可以实现效果 if ((e.shiftKey && k === 121) || (e.ctrlKey && k === 121)) { e.code = 0; e.preventDefault(); e.cancelBubble = true; return false; } //屏蔽Alt+F4 if ((e.altKey) && (k === 115)) { window.showModelessDialog("about : blank", "", "dialogwidth:1px;dialogheight :1px"); e.code = 0; e.preventDefault(); e.cancelBubble = true; return false; } //屏 Alt+ 方向键 + ;屏 Alt+ 方向键 !验证 if ((e.altKey) && ((k === 37) || (k === 39))) { alert("不准你使用ALT+方向键前进或后退网页!"); e.code = 0; e.preventDefault(); e.cancelBubble = true; return false } } //屏蔽右键菜单,!验证 document.oncontextmenu = function(event) { if (window.event) { event = window.event; } try { var the = event.target||event.srcElement; return (the.tagName === "INPUT" && thetype.tolowerCase() === "text") || the.tagName === "TEXTAREA"; } catch (e) { return false; } } //地址栏或刷新按钮点击都会触发该事件 弹出确认是否刷新 window.onbeforeunload = function(e) { var dialogText = "重新加载页面会丢失当前进度的答案,如无必要请取消操作"; e.returnValue = dialogText; return dialogText; };

只要使用最后一段unload事件可以防止无意刷新文档。会弹出框确认,一般可以减少误操作。

posted @ 2023-11-28 19:45  love/coder  阅读(83)  评论(0编辑  收藏  举报