«onbeforeunload» зарегистрировано для вызова функции, которая внутренне ожидает 500 мсек для завершения действия и после этого возвращает текст для приглашения.
Проблема заключается в том, что даже при нажатии кнопки отмены в этом приглашении,страница фактически обновлена.
Если время ожидания сокращено до 450 мс, оно работает нормально.
Чтобы проверить то же самое, добавьте скрипт, который делает содержимое страницы курсивом при событии unload.Таким образом, пользователь, нажимающий кнопку «Отмена», должен видеть содержимое в браузере курсивом.
Работает нормально, когда время ожидания равно 450, а не 550 мс.
<!DOCTYPE html>
<html>
<body onbeforeunload="return myFunction()">
<p id="content">Testing before unload</p>
<script>
function myFunction() {
var start = Date.now();
var current = Date.now();
while(current - start < 600) {
current = Date.now();
}
var para = document.getElementById('content');
para.style.fontStyle = "italic";
return "Are you sure";
}
</script>