Javascript history.pushState如何删除get参数?

Javascript history.pushState如何删除get参数?,javascript,html,browser-history,pushstate,Javascript,Html,Browser History,Pushstate,我正在使用 history.pushState('id','myTitle','myURL'); 操作显示的URL和历史堆栈。 在某些情况下,我会按如下方式获取参数: history.pushState('id','myTitle','?mySubLinkedStuff=hotSubLinkedStuff'); 现在当我这么做的时候 history.pushState('id','myTitle','#justSomeHashtag'); 它产生 我还可以覆盖myPublinkedSt

我正在使用

  history.pushState('id','myTitle','myURL');
操作显示的URL和历史堆栈。 在某些情况下,我会按如下方式获取参数:

history.pushState('id','myTitle','?mySubLinkedStuff=hotSubLinkedStuff');
现在当我这么做的时候

history.pushState('id','myTitle','#justSomeHashtag');
它产生 我还可以覆盖myPublinkedStuff的值,但似乎无法将其全部覆盖

预期结果:


显然,我不想在服务器上进行整个往返,我还想避免使用绝对路径或URL来保持项目的可移植性。

正如NimrodArgov正确地指出的那样:如果 推送完整的URL。 因此,为了确保应用程序的可移植性,我做了以下几点:

history.statePush(document.location.origin + window.location.pathname + '#myHashValue');

工作正常且快速。

要在不获取参数的情况下推送当前地址:

history.pushState("id", "myTitle", 
  location.protocol + "//" + location.host +
  location.pathname + location.hash
);
除此之外,

要推动哈希更改,我可以执行以下操作:

history.pushState("id", "myTitle", 
  location.protocol + "//" + location.host +
  location.pathname + location.search + "#myHashHere"
);
history.pushState("id", "myTitle", 
  location.protocol + "//" + location.host +
  location.pathname + "?my=query&over=here" + location.hash
);
要推动查询更改,我可以执行以下操作:

history.pushState("id", "myTitle", 
  location.protocol + "//" + location.host +
  location.pathname + location.search + "#myHashHere"
);
history.pushState("id", "myTitle", 
  location.protocol + "//" + location.host +
  location.pathname + "?my=query&over=here" + location.hash
);

※对不起,我没有足够的因果报应来评论……:/

如果你写历史。请注明“id”、“标题”和“姓名”http://example.com/hash“它不工作?我应该提到,由于项目的可移植性,我希望避免使用绝对地址。”。但你是对的——绝对URL当然有用。问题已编辑,“/hash”如何?