首页 > 解决方案 > 警告浏览器关闭按钮,但不是每次加载页面

问题描述

我想要代码提醒用户关闭浏览器的关闭按钮,但我会在每次加载或网页内的每次刷新和选项卡更改时收到警报。

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;
    }

标签: javascriptasp.net-mvcvisual-studio

解决方案


您必须将警报框状态保存在任何地方,以便您可以检查用户是否看过一次。例如,您可以将警报框的状态保存在本地存储中。我更改了代码。首先在 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?";
    }
}

推荐阅读