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