当用户离开或重新加载页面时,我想在我的角度应用中检测到。
应用程序(使用一些登录过程)应该区分它已被重新加载,因此用户不会丢失他的身份验证数据,应用程序应该能够从localStorage恢复必要的信息。
请提供一些“处理”浏览器重新加载/导航的最佳技巧。
答案 0 :(得分:21)
重新加载时,所有javascript和内存变量都会消失。在js中,您知道第一次再次运行代码时页面已重新加载。
要处理重装本身(包括点击F5)并在重新加载甚至取消之前采取行动,请使用'beforeunload'事件。
var windowElement = angular.element($window);
windowElement.on('beforeunload', function (event) {
// do whatever you want in here before the page unloads.
// the following line of code will prevent reload or navigating away.
event.preventDefault();
});
答案 1 :(得分:2)
我遇到了同样的问题,但Ben的回答并不适用于我。
This answer让我走上正轨。我想在某些州添加警告,但不是全部。我是这样做的(可能不是最干净的方式):
window.onbeforeunload = function(event) {
if ($state.current.controller === 'ReloadWarningController') {
// Ask the user if he wants to reload
return 'Are you sure you want to reload?'
} else {
// Allow reload without any alert
event.preventDefault()
}
};
(在ReloadWarningController
定义中,注入了$state
)