Javascript 返回浏览器按钮时修改URL获取变量

Javascript 返回浏览器按钮时修改URL获取变量,javascript,php,Javascript,Php,当您在浏览器中返回或前进时,我想修改上一个URL的变量 以前的url: mysite.com/store.php?code=1101of&action=add 返回或前进时,我要更改为: mysite.com/store.php?code=1101of&action=none您可以使用以下工具轻松完成: //当我们离开页面时 addEventListener(“beforeunload”,function()){ var loc=窗口位置; //获取搜索查询,将操作设置为“无” var url

当您在浏览器中返回或前进时,我想修改上一个URL的变量

以前的url:

mysite.com/store.php?code=1101of&action=add

返回或前进时,我要更改为:


mysite.com/store.php?code=1101of&action=none

您可以使用以下工具轻松完成:

//当我们离开页面时
addEventListener(“beforeunload”,function()){
var loc=窗口位置;
//获取搜索查询,将操作设置为“无”
var urlParams=新的URLSearchParams(loc.search);
urlParams.set(“操作”、“无”);
//构建新的URL
var url=loc.pathname+'?'+urlParams.toString()+loc.hash;
//更改浏览器历史记录
replaceState(null,“,url);

});这不是web浏览器的工作方式。@MartinZeitler这实际上是大多数单页应用程序框架的工作方式(Vue路由器、React路由器…)。服务器被设置为发送一个
index.html
,不管路径如何,然后,每次我们单击链接时,JS都会显示正确的内容并操纵URL,而不会加载新页面。他们可以做到这一点要感谢历史API,它已经提供了相当长的一段时间。漂亮的handy@blex绝对不是……因为它们都使用hashtag导航,这意味着服务器端请求的URL从一开始就不会改变。这些URL看起来不一样。@MartinZeitler“因为它们都使用标签导航”你让我笑了:)我每天都建立SPA,不,你不必使用哈希,一个合适的解决方案是使用会话;在客户端胡闹是这里的笑话;有一次,我写了一份带有可变步骤的调查问卷,这就迫使我这么做。但是,除了少数例外(这实际上是有意义的),这是蹩脚的UX设计。thxs Blex,但如果我只想修改“添加”而不重新定义完整的url?在chrome mate中工作非常完美!只有一件事,在safari osx中不是。。你知道为什么吗?应该是的,从那以后就一直被支持。若要调试,请在不使用
窗口的情况下尝试。addEventListener(“…”,function(){
,以便在页面加载时执行它。查看是否有任何错误,并查看URL栏中的地址是否会更改。这很奇怪,因为当我返回safari时,操作会更改为“无”,在url栏中工作正常。但是会话会及时返回..输入上一个购物车总值,如果我按两次相同..生成一个减法,而不是简单地停留在上一页safari中的history.replaceState似乎有一个错误