使用 window.history.go 和 Javascript 的浏览器后退按钮会在到达最终页面之前加载历史记录中的每个页面

问题描述 投票:0回答:1

在我的购物车页面中,当访问者单击“更新”或“删除”时,购物车页面每次都会自然刷新,如果访问者单击浏览器的“后退”按钮,他们将在“更新”或“删除”之前到达上一个购物车页面“删除”。

因此,为了在单击浏览器“后退”按钮时进入购物车页面之前到达该页面,我终于可以使用它了(我的所有页面都使用 JavaScript 和 JQuery):

var myback = -1

$(".myordersubmitbutton").click(function() {   
    myback = myback - 1; 
});

if(performance.navigation.type == 2)
{
    window.history.go(myback);
}

我知道

performance.navigation.type
已被弃用,但目前它可以在 Chrome/Edge(桌面)上运行。

所以上面的代码工作得很好,它让访问者回到进入购物车之前。

但是两种浏览器(Chrome/Edge)都会在进入“进入购物车之前”之前重新加载所有页面,因此如果上面的代码运行

window.history(-4)
,它会加载页面-1,然后是-2,然后是-3,然后最终到达- 4

我的问题:(正如我读到的)

window.history(-4)
不应该从浏览器历史记录中直接跳回到该页面,而不是先重新加载之间的所有页面吗?谢谢

javascript jquery browser-history
1个回答
0
投票

因此,因为每次“更新”或“删除”页面都会刷新,myback 将始终是:

var myback = -1

我在这些表单中添加了(因为“更新”/“删除”是一种表单)的 Java 功能:

echo "<input type=\"hidden\" value=\"$myback\" name=\"myback\">";

在 php 页面顶部:

$myback = $_REQUEST["myback"];

If($myback == "")
{
$myback = -1;
}
else
{
$myback = $myback -1;
}

我的 Java 现在是:

$(document).ready(function () {

if(performance.navigation.type == 2)
{
window.history.go(<?php echo $myback;?>);
}

});

现在它仍然按照正常的浏览器后退按钮刷新 1 次,但随后它会跳转到 window.history(-4),我可以接受这一点

© www.soinside.com 2019 - 2024. All rights reserved.