Сохраните window.history.back () для последующего использования - PullRequest
0 голосов
/ 18 сентября 2018

Я работаю над оформлением заказа, и у меня есть кнопка возврата, которая вызывает window.history.back() при нажатии.

Работает нормально, пока пользователь не внесет некоторые изменения в корзину, затем страница перезагрузится и window.history.back() сделает то же, что и window.reload(), потому что она получит последнюю страницу.

Я знаю, что лучшим обходным путем может быть применение Ajax к обновлениям в этой корзине путем ввода данных пользователем, чтобы сохранить window.history.back() неизменной на предыдущей странице перед входом в корзину. Но это невозможно в этом проекте, это временный prestashop, и будет хорошо сохранить window.history.back() при нажатии на какую-либо кнопку модификации перед отправкой для сохранения функции все на кнопке назад.

Я думаю, что это невозможно из-за неприкосновенности частной жизни, но я хочу знать, была ли у кого-то эта проблема раньше и какой обходной путь будет лучше.

Использование history.go(-2) отправит пользователю два шага назад, поэтому в некоторых случаях это не совсем нормально.

Может быть, глобальный счетчик, установленный на -1, а затем --counter; при входе или перезагрузке корзины сделает то же самое с history.go(counter);

Есть предложения по решению этой ситуации? Спасибо.

Ответы [ 2 ]

0 голосов
/ 18 сентября 2018

Решено с использованием следующего обходного пути:

Код:

/* inside the page where we want to preserve the "back" URI */
  <script>
var counter = 0;
      if(window.name != ""){
/* if window.name is set, assign the value to var counter*/
          counter = window.name;
      } else {
/* if it's not, init to 0. */
          counter = 0;
      }
/* Set window.name to counter value minus 1. It will be set to -1 the first time you enter the cartPage (on this example case) and it will be changed to -2, -3 etc each time you reload. */
      window.name = counter-1;
  </script>
/* On global.js */

if(window.location.href.indexOf("cartPage") === -1) {
    /* Reset window.name value if we're not on cartPage, to avoid errors */
    window.name = "";
}

/* The button: */

<a onclick="history.go(window.name)"> go back </a>

Надеюсь, это кому-нибудь поможет.Ура!

0 голосов
/ 18 сентября 2018

Попробуйте

window.location.replace(document.referrer);
...