是否可能自动更改url示例.com/4000/title-2/#!4000为示例.com/4000/title-2,而无需刷新页面?基本上是从URL中删除“ /!4000”。请注意,重要的是在哈希符号之前删除“ /”,而不仅仅是哈希符号。
我不知道这是否足够,并且它是否完全支持跨浏览器使用... Chrome可以接受:
location.hash = "";
但是这会保留地址栏中的“#”符号。
在完全支持HTML5历史记录API的现代浏览器中,您可以执行以下操作:
window.history.replaceState('Object', 'Title', '/4000/title-2');
编辑:这不会改变浏览器的历史记录。
编辑2:刚刚发现这个stackoverflow资源
router.navigate
听起来你是在 Angular 上下文中?如果是这样,你可以通过 Location 使用 getState()
获取当前状态,并使用 replaceState()
将其传递给新条目... 一般来说,在这里使用 Angular API 而不是本机 API 可能更有意义,但这也取决于你的路由器设置... 这有帮助吗? - Tobias Krogh
href
还是window.location
?如果你想要改变浏览器地址栏中的 URL,我建议你查看一下 URL 重写,使用你的服务器上运行的任何东西(Apache?)。 - David Thomas