Оповещение на кнопку закрытия браузера, но не для каждой загрузки страницы - PullRequest
0 голосов
/ 14 мая 2018

Я хочу, чтобы код предупреждал пользователя о закрытии кнопки закрытия браузера, но я получаю уведомление о каждой загрузке или каждом обновлении и изменении вкладки внутри веб-страницы.

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

1 Ответ

0 голосов
/ 14 мая 2018

Вы должны сохранить состояние окна оповещения в любом месте, чтобы вы могли проверить, видел ли пользователь его один раз. Вы можете сохранить состояние вашего окна предупреждения, например, в локальном хранилище. Я изменил код. Сначала в событии 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?";
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...