【问题标题】:Complex url history on a Backbone Marionette application and back buttonBackbone Marionette 应用程序和后退按钮上的复杂 url 历史记录
【发布时间】: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,这很棒,但我不得不单击“返回”按钮两次。

【问题讨论】:

    标签: backbone.js marionette


    【解决方案1】:

    问题是您将用户从 /config?lang=en 重定向到另一个页面,因此当您单击返回时,他们会到达前一个页面,然后再次重定向回登录页面。

    这里最简单的解决方案是 otherteam.com 链接到您的登录页面并传递参数以在那里使用 - http://myteam.com/landingpage?lang=en。多次重定向用户从来都不是一个好主意,而且几乎总是没有必要的。

    收到 lang 配置参数后,最好将其保存到本地存储中,以便可以在整个应用程序中任何需要的地方检索它。

    【讨论】:

    • 这也是我的建议之一。
    猜你喜欢
    • 2010-11-11
    • 2015-10-13
    • 1970-01-01
    • 2015-03-04
    • 1970-01-01
    • 2015-07-03
    • 1970-01-01
    • 2015-05-18
    • 1970-01-01
    相关资源
    最近更新 更多