如何在等待用户单击“确定”或“取消”时暂停 javascript 代码执行

问题描述 投票:0回答:0

问题:向用户发送了指向我们网站上文件的链接,如果他们在未登录系统的情况下尝试访问该链接,则会出现 404 错误。

解决方案:将用户重定向到登录页面(完成)。

更好的解决方案:将用户重定向到登录页面,等待登录成功,然后浏览到文件链接(完成)。

最佳解决方案:将用户重定向到登录页面,等待成功登录,然后浏览到文件,然后让用户选择继续访问站点仪表板(自然登录时的正常行为)或注销(问题)。

如您所见,我已经解决了 404 问题,并保持了遗留行为(即登录尝试失败),但我为网站添加了区分自然登录的功能(即直接浏览到网站登录)页面)和通过文件链接触发的登录。

我挂断的地方是在下载之后,让用户可以选择继续访问该站点或注销。代码只是不运行。这是当前工作的片段:

if (data.Success) {
    console.log("login was successful...");

    //@ts-ignore
    this.loginMessage = data.Message;

    //Check for file redirection URL. If found, redirect to file.
    //Otherwise set successUrl to landingpage if there is a preference.
    // @ts-ignore
    if (data.fileRedirectionURL !== "") {
        alert('LOGIN SUCCESSFUL!\nPress "OK" to retrive your file.');
        window.location.href = data.fileRedirectionURL;
    }
}

当第一次点击文件链接时,后端开始执行,并设置前端识别用户通过尝试点击文件链接到达登录页面的方式。一切正常。

这一行就在这里:

window.location.href = data.fileRedirectionURL;
将执行发送回后端 (C#) 代码以进行实际的文件下载,这次通过了登录检查,因为我强制用户登录(失败的登录仍然会做它总是做的事情并继续它的一天) .

将用户重定向到文件 URL 后我想做的是:

let actionCompleteMessage = "Action Complete!";
actionCompleteMessage = actionCompleteMessage + "Click 'OK' to continue to your landing page,\n";
actionCompleteMessage = actionCompleteMessage + "or click 'Cancel' to log out.";

let confirmResult = confirm(actionCompleteMessage);

if (!confirmResult) {
    console.log("ConfirmMessage = " + confirmResult);
    this.loginService.logout();
    return;
}

{code to go to landing page / dashboard}

我的问题是文件的下载对话框和“操作完成”对话框同时显示,我是否保存下载的文件并不重要,

if (!confirmResult)
调用似乎没有扳机。我已经尝试在页面使用开发工具时设置断点,但它根本不会在那里中断。它不会将 confirmResult 写入控制台,当然也不会注销用户。我如何确保在用户决定将下载保存在何处时停止执行代码,以便我可以捕获并执行他们的选择以保持登录站点或注销?

javascript url redirect frontend
© www.soinside.com 2019 - 2024. All rights reserved.