【问题标题】:How to check if we can go back in JS?如何检查我们是否可以返回 JS?
【发布时间】:2022-11-03 18:15:42
【问题描述】:

我在 Angular 中创建了一个指令,如果有历史记录可以返回或转到默认路由。 如果有以前的历史,我们不能在 JS 中测试。 所以我重定向到默认路由并调用 history.back() 函数。

  • 情况1 : 没有历史,history.back() 函数什么也不做,重定向到默认路由完成。

  • 案例2: 有一个历史,重定向到默认路由开始,但被 history.back() 取消,用户被重定向到上一页。

goBack() {      
        if(this.routerCommand) {
            this.router.navigate(this.routerCommand);
        }
        window.history.back();
    }

它适用于除 Safari 之外的所有浏览器。 我不明白为什么?

如果有人可以帮助我。 提前致谢。

【问题讨论】:

    标签: javascript angular


    【解决方案1】:

    而是使用窗口历史尝试使用位置。在你的.component.ts 中:

    import { Location } from '@angular/common';
    
    constructor(private location: Location) {}
    
    goBack() {      
        if(this.routerCommand) {
            this.router.navigate(this.routerCommand);
        }
        this.location.back();
    }
    

    注意:导入很重要地点形式@角/常见

    【讨论】:

      【解决方案2】:

      首先,您的代码只会有 1 个案例。 情况是:如果routerCommandrouter.navigate 然后不管发生什么都做window.history.back();

      接下来,您可以通过命令History.length(参考:https://developer.mozilla.org/en-US/docs/Web/API/History/length)查看标签的历史记录

      答:我不是绝对知道答案。但是,如果您对任何功能的浏览器兼容性感到好奇,您可以在此站点上查看:https://developer.mozilla.org/en-US/docs/Web/API/History/back#browser_compatibility

      【讨论】:

        猜你喜欢
        • 2020-10-17
        • 1970-01-01
        • 1970-01-01
        • 2020-05-23
        • 2013-09-28
        • 1970-01-01
        • 1970-01-01
        • 2021-10-26
        • 1970-01-01
        相关资源
        最近更新 更多