2016-01-19 2 views
0

Есть 2 веб-приложения, наша и другая команда. Веб-приложение другой команды является http://otherteam.com и наше приложение http://myteam.comСложная история URL-адресов на приложении марионетки базовой линии и обратно

На http://otherteam.com странице, они имеют HREF ссылку, указывающую на страницу, которая http://myteam.com/config?lang=en. Когда наше веб-приложение (на самом деле задача 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'); 

При нажатии кнопки Back, URL-адрес на верхней панели beocmes http://myteam.com/config?lang=en , но он больше не перезагружает нашу приземляющуюся площадку, что хорошо. Тем не менее, ничего не происходит со страницей, пока я не нажму кнопку «Назад» еще раз. Сделав второй щелчок на кнопке «Назад», я вернусь к http://otherteam.com, что здорово, но мне пришлось дважды нажать кнопку «Назад».

ответ

1

Проблема заключается в том, что вы перенаправляете пользователя из/config? Lang = en на другую страницу, поэтому, когда вы нажимаете «назад», они приземляются на предыдущую страницу и затем снова перенаправляются на целевую страницу.

Простейшим решением здесь будет ссылка на сайт otherteam.com для ссылки на вашу целевую страницу и передать параметры, которые будут потребляться там - http://myteam.com/landingpage?lang=en. Перенаправление пользователя с несколькими моментами никогда не является хорошей идеей и почти всегда ненужным.

Как только вы получили параметр конфигурации lang, может возникнуть идея сохранить его в локальном хранилище, чтобы его можно было найти везде, где это необходимо в вашем приложении.

+0

Это было одно из моих предложений. – devwannabe