当用户在页面上输入数据时,我希望它们返回上一页(例如主页 - >输入页面) . 如果我在点击提交时重定向它们,我将以循环历史记录(主页 - >输入页面 - >主页面)结束 . 因此,当用户点击提交时,我调用 window.history.back()
.
为了防止丢失数据,我监听beforeUnload事件 . 如果用户尚未提交表单,我会提示确保他们知道他们将丢失更改 .
我遇到的问题是,如果用户尝试返回而未提交数据,请单击“取消”以保留在页面上,然后单击“提交” . 他们第一次回击被取消,然后在提交后我执行了history.back(),但最终返回历史记录中的2个条目而不是1.这几乎就像我取消后一个事件时的前一个URL (主页)一起从历史堆栈中删除 . 因此,点击提交将超过该页面并返回到新标签页面 .
我知道堆栈管理很难,但如果用户取消onBeforeUnload以保留在页面上并且命中提交,则无法弄清楚如何转到上一个URL . 似乎用户取消它,当我调用history.back()时它应该返回主页面 .
1 回答
我发现我的问题与Angular有关,我在这个问题中忽略了这一点 . 它似乎是Angular navigation gets screwed up when a CanDeactivate guard cancels a navigation . 有一项拟议的工作似乎对我有用 .