保留window.history.back()以便以后使用

时间:2018-09-18 08:54:22

标签: javascript jquery browser-history

我正在结帐,并且有一个后退按钮,单击后会触发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 :(得分:1)

已解决,请使用以下解决方法:

代码:

/* 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>

希望它可以帮助某人。 干杯!

答案 1 :(得分:0)

尝试

window.location.replace(document.referrer);