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

Javascript 保留window.history.back()以便以后使用,javascript,jquery,browser-history,Javascript,Jquery,Browser History,我正在结账,我有一个后退按钮,单击该按钮可触发window.history.back() 工作正常,直到用户在购物车中进行一些更改,然后重新加载页面并window.history.back()执行与window.reload()相同的操作,因为它获得最后一页 我知道最好的解决方法是通过用户输入将Ajax应用于此购物车更新,以便在进入购物车之前保持window.history.back()inmutable到prev页面。但这在这个项目上是不可能的,这是一个临时的预启动,在提交到mantain之前

我正在结账,我有一个后退按钮,单击该按钮可触发
window.history.back()

工作正常,直到用户在购物车中进行一些更改,然后重新加载页面并
window.history.back()
执行与
window.reload()相同的操作,因为它获得最后一页

我知道最好的解决方法是通过用户输入将Ajax应用于此购物车更新,以便在进入购物车之前保持
window.history.back()
inmutable到prev页面。但这在这个项目上是不可能的,这是一个临时的预启动,在提交到mantain之前单击一些修改按钮时保留
window.history.back()

我认为这是不可能的,因为隐私,但我想知道,如果有人有这个问题之前,哪种解决办法会更好

使用
history.go(-2)
将向用户返回两步,因此对于某些用例来说这是不正常的

可能将全局计数器设置为
-1
,然后设置为
--计数器进入或重新装载购物车时,将使用
历史记录进行操作。go(计数器)

有没有处理这种情况的建议? 谢谢。

试试看

window.location.replace(document.referrer);

使用以下解决方法解决问题

代码:

/*在要保留“back”URI的页面内*/
var计数器=0;
如果(window.name!=“”){
/*如果设置了window.name,则将该值分配给var计数器*/
计数器=window.name;
}否则{
/*如果不是,则初始化为0*/
计数器=0;
}
/*将window.name设置为计数器值减1。第一次进入cartPage(在本例中)时,它将设置为-1,每次重新加载时,它将更改为-2、-3等*/
window.name=计数器-1;
/*关于global.js*/
if(window.location.href.indexOf(“cartPage”)=-1){
/*如果不在cartPage上,请重置window.name值以避免错误*/
window.name=“”;
}
/*按钮:*/
回去
希望它能帮助别人。
干杯

这意味着您想阻止浏览器返回?也许您可以将最后一页url保存在cookie中,然后将该url加载到按钮中,作为HREF如何进入签出页?虽然不理想,但很多大型网站在进入中心页面(如签出/错误页面/登录页面)时都会包含
&SourceUrl=
。这为您的按钮提供了一个具体的返回url,而无需担心历史。这确实意味着无论你的结帐按钮出现在哪里,都要改变它。@joelbonerodríguez不能解决问题。您自己添加它作为答案。@daniel beck完成,谢谢您的建议结果将与history.back()相同。如果页面重新加载,则此文档的引用者是同一页面。如果引用者不是来自购物车本身,而是来自网站的其他适当位置,则使用签入购物车控制器如何?将值写入cookie或会话,然后将其作为变量传递到模板中?如果没有值,则重定向到HomePage不是有效答案。当然。因为重定向到主页正是我不想要的。这将使用户再次搜索产品,可能会令人沮丧。写入cookie会将值保留得太长,并且写入cookie会比分配单个窗口全局js变量浪费更多资源。会话将需要一个ajax来保存值,它的持久性不在我手上(或者一定不在我手上)。
/* 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>