【发布时间】:2019-04-03 09:16:17
【问题描述】:
如果用户在我的角度平台中,我想在用户单击浏览器的后退按钮时将用户带到主页。
还有一个边缘情况需要处理, 如果用户通过 google 搜索、Fb 或直接输入链接来到我们的平台,那么我们不能这样做,但如果他已经在我们的平台上漫游,那么我们不希望每个返回按钮将用户带回家。
即
用户输入链接并按下按钮 => 带他回家。
用户输入链接,现在点击按钮或链接,应用状态已更改,现在用户点击浏览器返回按钮 => 将用户带回上一页(正常行为)
演示: 点击下面的链接,然后点击谷歌搜索上的第一个链接,然后尝试点击浏览器返回按钮,您会看到它会将您带到主页。
我尝试使用 pushState() 来实现它
ngAfterViewInit() {
console.log('init called');
var x = document.referrer;
console.log('ref', x);
console.log(this.angLocation.path());
if (x) {
console.log('pushing state');
this.location.pushState({id:'page3'}, 'Page3', '/page3');
}
}
点击下面的链接查看实际操作 https://angular-tet5fy.stackblitz.io/page2?fbclid=IwAR1zP_UTnCQxKMp8o3ZXf-n4NR3ftu_4JoulLqItaONa-_wSPJ_DT95OgRU
预期行为: 1. 单击链接将用户带到第 2 页。 2. 初始化 page2 时,它应该将状态“/page3”推送到浏览器历史记录。 3. 当用户现在点击浏览器时,它应该转到/page3,因为它在上面的步骤2中被推送到历史记录。
当前行为: 1. 单击链接,将我带到 page2,但在推送状态时它会自动重定向到 /page3。 2.当点击浏览器返回时,它带我回到/page2。
【问题讨论】:
标签: javascript angular routing angular2-routing browser-history