我有一个 URL,上面附加了一个很长的查询字符串。页面加载后,我不需要查询字符串。所以我想在不重新加载页面的情况下从地址栏中删除查询字符串。
我试过 parent.location.hash = '';
和 window.location.href = '/#'
他们没有改变。
原文由 Sangam254 发布,翻译遵循 CC BY-SA 4.0 许可协议
我有一个 URL,上面附加了一个很长的查询字符串。页面加载后,我不需要查询字符串。所以我想在不重新加载页面的情况下从地址栏中删除查询字符串。
我试过 parent.location.hash = '';
和 window.location.href = '/#'
他们没有改变。
原文由 Sangam254 发布,翻译遵循 CC BY-SA 4.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 许可协议
13 回答12.8k 阅读
7 回答1.9k 阅读
3 回答1.1k 阅读✓ 已解决
2 回答1.1k 阅读✓ 已解决
6 回答822 阅读✓ 已解决
2 回答1.4k 阅读✓ 已解决
6 回答1k 阅读
如果不重新加载页面就无法做到这一点,想象一下您是否可以将您想要的任何内容放入浏览器地址栏中?安全乐趣:)
虽然 您现在可以使用新的 history API 在 HTML5 中(它只适用于支持它的浏览器)执行此操作,但实际上,您的场景最好保证重写而不是包含它(似乎是大锤来破解坚果)。
正如您所说,页面加载后不需要查询字符串,您应该 真正 回发,然后在完成处理后重定向到另一个 URL。