【问题标题】:Angular platformLocation pushState not workingAngular platformLocation pushState 不起作用
【发布时间】:2019-08-24 22:50:16
【问题描述】:

我想在第一次加载平台时向浏览器历史记录注入一个新状态,这样当用户点击浏览器后退按钮时,它应该会进入应用的主页。

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

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

我什至尝试提供完整的网址

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

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

【问题讨论】:

    标签: javascript angular browser html5-history


    【解决方案1】:

    我已经在你的另一个问题中回答了这个问题: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。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-10-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-19
      • 1970-01-01
      • 2022-12-19
      相关资源
      最近更新 更多