Javascript 角度:单击浏览器后退按钮将用户带回家

Javascript 角度:单击浏览器后退按钮将用户带回家,javascript,angular,routing,angular2-routing,browser-history,Javascript,Angular,Routing,Angular2 Routing,Browser History,如果用户在我的平台上,我想在用户单击浏览器的后退按钮时将用户带到主页 还有一个边缘案件需要处理, 如果用户通过谷歌搜索、Fb或直接进入链接来到我们的平台,那么我们无法阻止这种行为,但如果他已经在我们的平台上漫游,那么我们不希望每个后退按钮都将用户带回家 i、 e 用户输入链接并按下按钮=>带他回家 用户输入链接,现在单击按钮或链接,应用程序状态更改,现在用户单击浏览器后退按钮=>将用户带回previos页面(正常行为) 演示: 点击下面的链接,然后点击谷歌搜索的第一个链接,然后尝试点击浏览器后退

如果用户在我的平台上,我想在用户单击浏览器的后退按钮时将用户带到主页

还有一个边缘案件需要处理, 如果用户通过谷歌搜索、Fb或直接进入链接来到我们的平台,那么我们无法阻止这种行为,但如果他已经在我们的平台上漫游,那么我们不希望每个后退按钮都将用户带回家

i、 e

  • 用户输入链接并按下按钮=>带他回家

  • 用户输入链接,现在单击按钮或链接,应用程序状态更改,现在用户单击浏览器后退按钮=>将用户带回previos页面(正常行为)

  • 演示: 点击下面的链接,然后点击谷歌搜索的第一个链接,然后尝试点击浏览器后退按钮,你会看到它带你进入主页

    我尝试使用pushState()实现它

    单击下面的链接,查看它的实际操作

    预期行为: 1.点击链接将用户带到第2页。 2.初始化page2时,应将状态“/page3”推送到浏览器历史记录中。 3.当用户现在单击浏览器返回时,它应该转到/page3,因为它在上面的步骤2中被推到了历史

    当前行为: 1.点击链接,进入第2页,但在按下状态时,它会自动重定向到/page3。
    2.当单击browser back(浏览器返回)时,它会将我带回/page2。

    您可以使用
    history.pushState(null,null,'https://twitter.com/hello');
    并将应用程序的主页链接作为第三个参数传递。在这种情况下,按back将用户移动到主页

    看看这里


    或者:

    您可以使用
    history.pushState(null,null,'https://twitter.com/hello');
    并将应用程序的主页链接作为第三个参数传递。在这种情况下,按back将用户移动到主页

    看看这里


    或者:

    他们在该页面中所做的有点棘手。 诀窍是使用
    history.pushState
    创建新的历史记录,然后订阅该位置的pop事件,将网页更改为主页

    我建议做一些稍微不同和简单的事情,代码只需要以下几行:

      let locat = location.href;
        if (!!window.location.pathname && window.location.pathname !== '/') {
            history.replaceState(null,null,location.origin);
            history.pushState(null, null,locat);
        }
    
    我们在这里所做的是使用
    history.replaceState(null,null,location.origin)将url更改为您想要的主页
    然后使用
    history.pushState(null,null,locat)在历史记录中创建一个新条目包含第一个url

    这里的示例:

    在这里尝试一下:

    他们在那页上做的事情有点棘手。 诀窍是使用
    history.pushState
    创建新的历史记录,然后订阅该位置的pop事件,将网页更改为主页

    我建议做一些稍微不同和简单的事情,代码只需要以下几行:

      let locat = location.href;
        if (!!window.location.pathname && window.location.pathname !== '/') {
            history.replaceState(null,null,location.origin);
            history.pushState(null, null,locat);
        }
    
    我们在这里所做的是使用
    history.replaceState(null,null,location.origin)将url更改为您想要的主页
    然后使用
    history.pushState(null,null,locat)在历史记录中创建一个新条目包含第一个url

    这里的示例:

    在这里尝试一下:

    它确实添加了一个新状态,但单击“后退浏览器”按钮除了从历史记录中删除状态外,没有其他作用。是否要发布一些代码以查看您的实现?这绝对是正确的方法,如果您看到底部的第二个链接,就会看到一个示例,其中包含code.window.history.pushState(null,'home','home');我甚至试过这个窗口。history.pushState(null,'home',')@mac-w你能看看页面底部的演示链接吗。因此,它不只是按下状态,而是在历史记录中按下时重定向到该状态。它确实添加了一个新状态,但单击“上一步浏览器”按钮除了从历史记录中删除状态外,没有其他作用。是否要发布一些代码以查看您的实现?这绝对是正确的方法,如果您看到底部的第二个链接,就会看到一个示例,其中包含code.window.history.pushState(null,'home','home');我甚至试过这个窗口。history.pushState(null,'home',')@mac-w你能看看页面底部的演示链接吗。因此,它不只是推动这个国家,而是在推动历史的同时重定向到那个国家。