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