页面加载后如何从 url 中删除查询字符串?

新手上路,请多包涵

我有一个 URL,上面附加了一个很长的查询字符串。页面加载后,我不需要查询字符串。所以我想在不重新加载页面的情况下从地址栏中删除查询字符串。

我试过 parent.location.hash = '';window.location.href = '/#'

他们没有改变。

原文由 Sangam254 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 364
2 个回答

如果不重新加载页面就无法做到这一点,想象一下您是否可以将您想要的任何内容放入浏览器地址栏中?安全乐趣:)

虽然 您现在可以使用新的 history API 在 HTML5 中(它只适用于支持它的浏览器)执行此操作,但实际上,您的场景最好保证重写而不是包含它(似乎是大锤来破解坚果)。

正如您所说,页面加载后不需要查询字符串,您应该 真正 回发,然后在完成处理后重定向到另一个 URL。

原文由 mattytommo 发布,翻译遵循 CC BY-SA 3.0 许可协议

正如其他人所说,您可以在现代浏览器(IE10+、FF4+、Chrome5+)中使用 History API 来执行此操作。答案中没有完整的示例,所以我想我会分享我的解决方案,因为我只是需要做同样的事情:

 history.pushState(null, "", location.href.split("?")[0]);

如果您使用的是 Modernizr ,您还可以检查 History API 是否可用,如下所示:

 if (Modernizr.history) {
    history.pushState(null, "", location.href.split("?")[0]);
}

原文由 germankiwi 发布,翻译遵循 CC BY-SA 3.0 许可协议

推荐问题