首页 文章

使用onBeforeUnload搞砸了Angular中的浏览器历史记录

提问于
浏览
0

当用户在页面上输入数据时,我希望它们返回上一页(例如主页 - >输入页面) . 如果我在点击提交时重定向它们,我将以循环历史记录(主页 - >输入页面 - >主页面)结束 . 因此,当用户点击提交时,我调用 window.history.back() .

为了防止丢失数据,我监听beforeUnload事件 . 如果用户尚未提交表单,我会提示确保他们知道他们将丢失更改 .

我遇到的问题是,如果用户尝试返回而未提交数据,请单击“取消”以保留在页面上,然后单击“提交” . 他们第一次回击被取消,然后在提交后我执行了history.back(),但最终返回历史记录中的2个条目而不是1.这几乎就像我取消后一个事件时的前一个URL (主页)一起从历史堆栈中删除 . 因此,点击提交将超过该页面并返回到新标签页面 .

我知道堆栈管理很难,但如果用户取消onBeforeUnload以保留在页面上并且命中提交,则无法弄清楚如何转到上一个URL . 似乎用户取消它,当我调用history.back()时它应该返回主页面 .

1 回答

相关问题