Вы столкнулись с проблемой , о которой уже сообщалось.Это похоже на ошибку, но согласно Chrome dev (kozy) это особенность :
Спасибо за воспроизведение.Это на самом деле особенность.Как только вы нажали reload, мы игнорируем все точки останова перед перезагрузкой страницы.Это полезно все время, когда у вас много точек останова и вам нужно перезагрузить страницу, чтобы возобновить сеанс отладки.
Обходной путь: вместо нажатия кнопки перезагрузки вы можете перейти к тому же URL-адресу с помощью омнибокса, затем всеточка останова будет работать, как и ожидалось.
Я добавил смелый акцент, чтобы указать на обходной путь, предложенный Кози.Я попробовал это и обнаружил, что это работает.
Помимо проблемы с оператором debugger
, обработчики выполняются независимо от того, перезагружаете ли вы или закрываете вкладку.В обоих следующих случаях я получаю сообщение о наличии, которое Chrome предоставляет при возврате true:
window.addEventListener("beforeunload", function (ev) {
ev.returnValue = true; // `return true` won't work here.
});
Это тоже работает:
window.onbeforeunload = function () {
return true;
}
Раньше вы могли использовать возвратзначение с сообщением, и браузер будет показывать ваше пользовательское сообщение, но браузеры, как правило, больше не поддерживают это.
Если вы хотите установить обработчик для beforeunload
внутри обработчика для load
, это полностью зависит от ваших целей .Например, у меня есть приложение для редактирования документов, которое не устанавливает обработчик beforeunload
до тех пор, пока приложение не начнет инициализацию, что намного позже, чем событие load
.Обработчик beforeunload
предназначен для того, чтобы пользователь не покинул страницу с несохраненными изменениями.