2016-11-18 3 views
0

Когда форма отправляется на URL-адрес, браузер регистрирует страницу снова в истории. Предположим, я нахожусь на странице X, и я перехожу на страницу Y и отправлю форму. Теперь, когда я нажимаю кнопку в браузере, он снова загружает одну и ту же страницу, т. Е. Страница Y вместо перехода на страницу X. Итак, это представление формы заставляет браузер регистрировать страницу Y в истории браузера. И я поддерживаю все браузеры и устройства. Как удалить последнюю запись в истории браузера или остановить браузер от регистрации страницы снова в истории?Удалить последний элемент в истории браузера

+0

Не могли бы вы просто отправить форму на страницу X, когда это будет сделано, чтобы людям не нужно было нажимать кнопку «Назад»? –

+0

@tylermackenzie Нет, пользователь должен оставаться на той же странице, что и другие функции, отличные от отправки формы. Но даже если я сделаю history.back(), он все равно будет в истории, и если пользователь снова нажмет кнопку «вперед», ему придется дважды щелкнуть кнопку «Назад», чтобы перейти на страницу X, если захочет. –

ответ

0

Вы не можете редактировать историю пользователей. Лучшее, что вы можете сделать в этом отношении, - это изменение, при котором кнопка возврата текущей страницы указывает на location.replace(pageX), так что нажатие кнопки «Назад» не перезагружает одну и ту же страницу, а переходит на страницуX. Но проблемы возникнут, если пользователь снова вернется, потому что история для этой страницы снова будет на странице.

Ваш лучший вариант - сохранить отправку формы с обновления страницы в первую очередь. Таким образом, история будет правильной. Это можно сделать, отправив форму с помощью AJAX вместо традиционного метода. Вот пример использования jQuery для предотвращения отправки традиционной формы и последующего запроса AJAX.

$(document).ready(function() { 
    $('#myform').on('submit', function(e) { 
     e.preventDefault(); 
     $.ajax({ 
      url : $(this).attr('action'), 
      data: $(this).serialize(), 
      success: function (data) { 
       // if you want it to do something when it's done, put it here 
      }, 
      error: alert("broke"), 
      type: "GET" 
     }); 
    }); 
}); 

Update

Третий хороший вариант, чтобы просто делать то, что вы заявили в своем комментарии. Если вы используете history.back() после отправки формы, пользователи Назад История будет работать именно так, как вы хотите. однократное нажатие возвращает их на страницуX. это будет только Вперед История, которая становится странной. Но было бы крайне маловероятно, чтобы кнопка «вперед» была нажата. пользователь Просто перешел на страницу, зачем им нажимать вперед? Затем, как только они перемещаются в другое место, эта странная история перезаписи перезаписывается.

Смежные вопросы