Мне нужен способ отключить кнопку браузера назад или показать всплывающее окно для возврата, когда пользователь находится на 2-й странице формы гравитации или уже имеет данные POST.
Предположим, что форма на https://www.example.com/form/ и имеет 3 шага.
На шаге 1, если пользователь отправляет данные, он остается на / form / page, но его содержимое отображается с шага 2 формы.
На этом этапе я хочу отключить кнопку «Назад» или спросить пользователя, хочет ли он вернуться, но при этом будут удалены отправленные данные шага 1.
Я пробовал использовать popstate, и он отключает кнопку "Назад" при первом посещении / или первом шаге формы, когда у нас нет данных POST (когда пользователь посещает сайт example.com/page/ с exmaple.com/form/ и пытается вернуться, не может)
window.addEventListener('popstate', function (event) {
alert(event.state);
history.pushState(null, null, document.URL);
});
При использовании этого кода предупреждение показывает нулевое значение, но оно не дает вернуться, если это обычное посещение (без данных POST), но мне нужен способ прекратить возвращаться, если данные формы отправлены
Я также пытался использовать следующий код:
window.addEventListener('DOMContentLoaded', function(eventX){
console.log("DOMContentLoaded done!");
setTimeout(function(){
console.log("beforeunload registered");
window.onbeforeunload = function(){return backDisable()};
window.addEventListener("beforeunload", function(){return backDisable();});
},1000);
});
function backDisable()
{
return "show some warning here!";
}
Я установил задержку, чтобы другие вещи загружались. Этот скрипт работает нормально, если пользователь пытается посетить другую страницу на веб-сайте, и отображает всплывающее окно, если пользователь хочет покинуть страницу, но он также показывает всплывающее окно, если пользователь отправляет форму на шаге 1 или шаге 2 (я могу разобраться) но кнопка возврата в браузере все еще работает.