角平台位置pushState不起作用

时间:2019-04-03 11:59:07

标签: javascript angular browser html5-history

我希望在第一次加载平台时向浏览器历史记录注入新状态,因此当用户单击浏览器后退按钮时,它应该会登陆到应用程序的主页。

我尝试使用添加新状态 1. PlatformLocation pushState() 2. window.history.pushState()

location.pushState(null, 'home', 'home');
// window.history.pushState(null, 'home', 'home');

我什至尝试提供完整的URL

location.pushState(null, 'home', 'http://localhost:4200/home');
// window.history.pushState(null, 'home', 'http://localhost:4200/home');

它的确向浏览器历史记录添加了新状态,但是当我单击浏览器后退按钮时,什么也没有发生,即我仍在同一页面中,但是只有新添加的状态从浏览器历史记录中删除了。

1 个答案:

答案 0 :(得分:0)

我已经在您这里的其他问题中回答了这个问题:https://stackoverflow.com/a/55511843/11289490

调用history.pushState时,它只会将具有所需URL的页面添加到历史记录中,但不会加载网页或检查网页是否存在。

如果要在导航时加载主页,可以执行以下操作:

 let locat = location.href;
    if (!!window.location.pathname && window.location.pathname !== '/') {
        history.replaceState(null,null,location.origin);
        history.pushState(null, null,locat);
    }

它将添加带有url基的历史记录,然后在历史记录中添加完整的url。