【发布时间】:2018-05-23 14:07:05
【问题描述】:
我有一个 angular 项目,我在其中尝试捕获后退按钮事件,以触发我自己的功能。
我正在使用onpopstate,来自window (js) 和platformLocation (angular),并且该函数并不总是被触发。
我有一个重定向到我的页面的登录,我可以通过两种方式。
- 作为新用户,在我的应用程序的注册表中。在这种情况下,函数被触发
- 使用现有帐户访问任何页面。在这种情况下,该功能永远不会起作用。事实上,如果我去注册页面,它也不起作用。
我也尝试使用window.onbeforeunload,并始终执行它,但是当我尝试重定向到另一个页面(这是我想要做的)并阻止默认导航时,它不起作用。
您对正在发生的事情有所了解吗?
感谢您的帮助
编辑
这是我的服务中的主要代码。
服务代码
@Injectable()
export class BackService {
constructor(
private _platformLocation: PlatformLocation
) {
vm.setBackEvent();
}
/**
* NAvigation from browser
*/
setBackEvent() {
const vm = this;
// JS ** this trigger the function but dont navigate
// window.onbeforeunload = function (e) {
// console.log('onbbeforeunload');
// location.href = url;
// return ;
// };
// JS ** this doesnt work always
// window.onpopstate = (e) => {
// console.log('window onpopstate');
// location.href = url;
// }
// Angular ** his doesnt work always
this._platformLocation.onPopState = (e: LocationChangeListener) => {
console.log('PlatformLocation onpopstate');
location.href = url;
}
}
}
【问题讨论】:
-
查看您的代码会有所帮助。请提供minimal reproducible example
-
请发布您的代码以及您到目前为止所做的工作。
标签: javascript angular frontend dom-events browser-history