javascript更改get参数而不重定向

如何在不重定向的情况下更改get参数?

parent.location.search = "?after=20"; // ok that changes, but also redirect to the new page 

有解决方案吗 或者答案是否定的,如果不是,请写大号。

更新

由于这是已接受的答案,并且不再正确 ,请参阅此重复问题以获取最新信息。

原始答案如下:


没有

您可以接近URL的锚点部分,该部分可以通过location对象的hash属性访问

 parent.location.hash = "whatever value you want"; 

如果您的目标是使用查询字符串来存储稍后可以从书签中恢复的某个状态,则应该使用锚点。

但是,如果由于某种原因必须更改查询字符串,实际上有一种方法 。 但是,我并不赞同这一点。 我只是提到它的完整性。

当服务器返回204 No Content响应时,大多数浏览器都不会做任何事情 – 即使甚至不会尝试转换到另一个页面甚至擦除当前页面。 您可以做的是,当对刚刚提供的同一页面发出请求时,后端只会发出204响应,并且查询参数会发生变化。

到现在为止,答案是肯定的

至少在HTML5中,这意味着所有主流浏览器(IE10 +)
Internet Explorer是否支持pushState和replaceState?
http://caniuse.com/#feat=history

您还可以在另一个SO问题上查看我的答案:
如何在不刷新页面的情况下更改页面URL?

呃,不 – 如果您更改URL参数,您的浏览器将加载新页面。

在不从服务器重新加载页面的情况下,您无法更改查询字符串(即用星号标记的部分)。 但是,您可以使用http://www.example.com/page.html#anchorname等页面锚点来影响url,而无需从服务器重新加载页面。

你不能这样做,因为如果你可以这样做会带来安全风险….如果页面可以改变URL栏中的值,那么网络钓鱼者可以很容易地将页面改为看似是您银行网站上的一个页面。