使用AngularJS/Javascript禁用仅浏览器返回按钮导航(不包括应用中的链接)

Disable Only Browser Back Button navigation(not links in app) with AngularJS/Javascript

本文关键字:不包括 导航 应用 链接 按钮 返回 Javascript AngularJS 浏览器 使用      更新时间:2023-09-26

我正在使用AngularJS做SPA。我想在应用程序中使用链接浏览应用程序状态,我想防止在单击后退按钮时出现相同的导航

我找到的所有解决方案,包括angularJs中的$locationChangeStart,当我在应用程序中点击链接时,也会阻止导航。

请提供一个解决方案,防止只有浏览器返回按钮导航,并允许通过在应用程序中单击链接导航。

要做到这一点,最简单的方法是从当前应用程序状态(url)到有效的下一个应用程序状态(url)的转换映射,并且只有在从当前状态到$locationChangeStart所需状态的转换无效时才使用preventDefault。

如果你这样做,你不仅阻止了用户使用后退按钮,而且还阻止了在浏览器中放置不受欢迎的url来创建无效的应用程序状态,并可能损害你的应用程序。

我建议你不要用一些"on history change history"。方法,就像在另一个答案中链接的,这是最糟糕的UX,让它对用户透明。