Как отключить кнопку возврата браузера, используя javascript / jquery, когда у нас есть данные формы POST - PullRequest
2 голосов
/ 23 марта 2019

Мне нужен способ отключить кнопку браузера назад или показать всплывающее окно для возврата, когда пользователь находится на 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 (я могу разобраться) но кнопка возврата в браузере все еще работает.

1 Ответ

0 голосов
/ 23 марта 2019

Попробуйте использовать метод window.history.forward () или onbeforeunload и верните предупреждение для пользователей в javascript для более подробной информации. Проверьте этот вопрос (, как остановить кнопку возврата браузера, используя javascript )

...