javascript - 警告浏览器关闭按钮,但不是每次加载页面
问题描述
我想要代码提醒用户关闭浏览器的关闭按钮,但我会在每次加载或网页内的每次刷新和选项卡更改时收到警报。
window.onbeforeunload = function (event) {
var message = 'Sure you want to leave?';
if (typeof event == 'undefined') {
event = window.event;
}
if (event) {
event.returnValue = message;
}
return message;
}
解决方案
您必须将警报框状态保存在任何地方,以便您可以检查用户是否看过一次。例如,您可以将警报框的状态保存在本地存储中。我更改了代码。首先在 onload 事件中,检查是否有 localStorage 项目“showConfirmation”。如果不是,则使用字符串值“true”创建一个,否则只需记录该值。其次,在 beforeclose 上,它检查项目是否具有值“true”。如果是这样,则返回一个字符串以显示警报消息。第三,在 window.close 上,您将项目设置为字符串“false”,该消息将不再显示。
window.onload = checkLocalStorage;
window.onbeforeunload = askForClose;
window.unload = checkLocalStorage;
function checkLocalStorage() {
if (localStorage.getItem("showConfirmation") === null) {
localStorage.setItem("showConfirmation", "true");
} else {
console.log(localStorage.getItem("showConfirmation"));
}
}
function askForClose() {
var showConfirmation = localStorage.getItem("showConfirmation");
if (showConfirmation === "true") {
localStorage.setItem("showConfirmation", "false");
return "You really want to close?";
}
}
推荐阅读
- scala - 处理 Scalatest 的 Prettifier 时如何处理类型擦除
- groovy - 需要使用 Groovy 脚本断言检查整个数组列表中的值不应为 Null 或 0
- sqlite - 如何定位 SQLite 数据库的密钥
- episerver - EpiServer:获取当前所选语言的内容?
- javascript - chart.js 时间序列跳过几天
- dynamics-crm - 如何使用 REST API 检索 Dynamics Sales 数据?
- gradle - Gradle 自定义插件作为独立项目
- arrays - 数组在他们读取的子程序中自动改变
- couchdb - Couchdb 视图生成性能
- java - 如何为包含存储过程调用的方法编写 mokito junit