Как отключить всплывающее окно JavaScript при обновлении страницы?

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

Вот мой текущий код:

<body onunload="функция_выхода()">

<script>
function функция_выхода() {
  let новое_окно = window.open("", "окно1", "status=1,width=500,height=300");
  новое_окно.document.write('<h2>Наша команда</h2><p>Спасибо за визит!</p><p>Если вы случайно закрыли сайт, нажмите <a href="#">сюда</a>, чтобы вернуться.</p>');
}
</script>

Как изменить этот код, чтобы всплывающее окно не появлялось при обновлении страницы? Буду благодарен за помощь!

Да, с этим багом многие сталкиваются. Можно попробовать использовать комбинацию событий beforeunload и unload. Например, в beforeunload установить флаг в sessionStorage, а в unload проверять его. Если флаг есть - значит закрытие, показываем окно. Если нет - обновление, ничего не делаем. Не идеально, но должно сработать в большинстве случаев. Можешь попробовать, если что - пиши, обсудим другие варианты.

Понимаю твою проблему, сам с таким сталкивался. к сожалению, точно различить закрытие браузера и обновление страницы довольно сложно. но можно попробовать использовать комбинацию событий beforeunload и unload. вот пример кода, который может помочь:

window.onbeforeunload = function() {
sessionStorage.setItem(‘closing’, ‘true’);
return null;
};

window.onunload = function() {
if (sessionStorage.getItem(‘closing’) === ‘true’) {
let новое_окно = window.open(‘’, ‘окно1’, ‘width=500,height=300’);
новое_окно.document.write(‘

Спасибо за визит!

’);
}
};

это не идеальное решение, но должно сработать в большинстве случаев. надеюсь, поможет!

Проблема знакомая, но простого решения нет. Можно попробовать комбинацию beforeunload и unload с флагом в sessionStorage, но это не идеально. Еще вариант - отслеживать действия пользователя (движения мыши, клики) и на их основе определять намерение закрыть страницу. Но это сложнее в реализации и тоже не гарантирует 100% результат. В целом, точно отличить закрытие от обновления довольно проблематично из-за ограничений браузеров. Возможно, стоит подумать над альтернативным UX-решением.