我们开发SPA应用时,会用到弹窗来提高用户体验。但是在微信等打开网页时会有一个默认返回按钮,当我们点击时会默认跳转URL,路由时没有问题但是在弹窗时就有问题了,我们只想关闭弹窗,其他都不变。这个应用场景是我们经常需要的。以下是解决方法。
①在打开弹窗时添加一个空的历史状态。
②监听popstate事件,在点击返回按钮时,判断是否有弹框存在,如果存在则关闭弹框(这里需要有个公共的弹框服务)。
③如果用的是angularjs 需要刷新一下视图;
很简单就以上三步就可以了,下面贴上代码;
① history.pushState({}, '');
② window.addEventListener("popstate", function(e) { if(PageService.dialogList.length>0){ PageService.closeDialog(); ③ $scope.$apply(); } }, false);