Angular定位服务:如何判断"back"和"forward"导航是否可用
Angular Location service: how to determine if "back" and "forward" navigation are available
在我的 PWA 中,当应用程序处于独立模式时,我正在实现后退和前进导航按钮。
为此,我在我的组件中注入 Location service 然后:
public onForward() {
this.location.forward();
}
public onBack() {
this.location.back();
}
我现在要做的是在没有可用的前进导航时禁用前进按钮,同样在没有可用的后退导航时禁用后退按钮(例如,应用程序刚刚启动)。知道如何实现这一目标吗?位置 API 似乎无法满足此要求。
是的,从 API 文档看来确实很清楚。
你可以简单地自己用一个计数器来跟踪:
private history_depth = 0;
public onForward() {
this.history_depth -= 1;
this.location.forward();
}
public onBack() {
this.history_depth += 1;
this.location.back();
}
public isBackEnabled() {
return this.history_depth > 0;
}
编辑:
然而,它并不完美:通过浏览器手动返回将不起作用。这在 this SO post 中进行了解释(tldr;不可能,因为这会是一个安全问题),建议启用后退按钮 - 如果没有后退历史记录,这是一个空操作。
此外,也许 the history API 可以解决一些问题。它不会是完美的,但也许有一些案例可以成功解决。您可以在上述 SO post.
的各种答案中查看示例
在我的 PWA 中,当应用程序处于独立模式时,我正在实现后退和前进导航按钮。 为此,我在我的组件中注入 Location service 然后:
public onForward() {
this.location.forward();
}
public onBack() {
this.location.back();
}
我现在要做的是在没有可用的前进导航时禁用前进按钮,同样在没有可用的后退导航时禁用后退按钮(例如,应用程序刚刚启动)。知道如何实现这一目标吗?位置 API 似乎无法满足此要求。
是的,从 API 文档看来确实很清楚。
你可以简单地自己用一个计数器来跟踪:
private history_depth = 0;
public onForward() {
this.history_depth -= 1;
this.location.forward();
}
public onBack() {
this.history_depth += 1;
this.location.back();
}
public isBackEnabled() {
return this.history_depth > 0;
}
编辑:
然而,它并不完美:通过浏览器手动返回将不起作用。这在 this SO post 中进行了解释(tldr;不可能,因为这会是一个安全问题),建议启用后退按钮 - 如果没有后退历史记录,这是一个空操作。
此外,也许 the history API 可以解决一些问题。它不会是完美的,但也许有一些案例可以成功解决。您可以在上述 SO post.
的各种答案中查看示例