【发布时间】:2016-01-19 21:03:39
【问题描述】:
有 2 个 Web 应用程序,我们的和其他团队的。另一个团队的网络应用是http://otherteam.com,我们的应用是http://myteam.com
在http://otherteam.com 网页上,他们有一个指向我们页面的href 链接http://myteam.com/config?lang=en。当我们的 Web 应用程序(实际上是 Marionette AppRouter 的任务)接收到这种路由或路径时,它会解析它并设置语言配置,然后我们有一个代码将用户重定向到最终的网页 http://myteam.com/landingpage
我们使用的代码是
Backbone.history.navigate('landingpage', {replace: true});
将用户重定向到最终目的地。
不幸的是,当用户点击浏览器的返回按钮时,它并没有返回到http://otherteam.com。它将返回到http://myteam.com/config?lang=en,这仍然是我们自己的应用程序。发生的情况是 Marionette 应用程序路由器将再次解析它,类似于我上面描述的方式。用户将被带回http://myteam.com/landingpage
所以我改变了
// Backbone.history.navigate('landingpage', {replace: true})
现在我正在使用
history.replaceState({}, '', 'landingpage');
当我点击后退按钮时,顶部栏上的网址变为http://myteam.com/config?lang=en,但它不再重新加载我们的登录页面,这很好。但是,在我再次单击“返回”按钮之前,页面没有任何反应。在第二次单击“返回”按钮后,我回到了http://otherteam.com,这很棒,但我不得不单击“返回”按钮两次。
【问题讨论】: