Лучшая практика:Как обеспечить параллельную навигацию браузера и веб-сайта

StackOverflow https://stackoverflow.com/questions/77645

  •  09-06-2019
  •  | 
  •  

Вопрос

Это хорошо известная проблема каждому веб-разработчику.Сколько я ни пытался найти хорошее решение этой проблемы - его не было (или по крайней мере я его не нашел).

Предположим следующее:

Пользователь ведет себя не так, как от него ожидали. В реальном проекте, над которым я работаю, используется навигация внутри веб-портала.Но если пользователь использует кнопку «Назад» в браузере, все становится под угрозу[?] и результат не всегда предсказуем.

Мы использовали структуру Struts и сохранили обратный URL-адрес в формах — в некоторых местах, где нам нужен обратный URL-адрес, он был визуализирован из обратного URL-адреса этой формы.Поскольку для этой информации было только одно поле, и поэтому вернуться на несколько шагов назад было невозможно.

Когда вы меняете «struts-flow», что может привести к использованию другая форма - эта информация будет потеряна.

Если пользователь осмелится поставить закладка где-то внутри вашего веб-приложения — эта информация, возможно, никогда не была установлена, и результат снова будет либо непредсказуемым, либо недостаточно гибким!

Мое «решение»:

Я сохранял каждую страницу, связанную с навигацией, которую посещал пользователь, в похожий на стопку хранение в сессия.Это означает, что путь навигации собирается и сохраняется для последующих переходов.

На любой странице веб-приложения, где задействована обратная навигация, я использовал самодельный тег, который отображает содержимое стека в URL-адрес.

Вот и все.При нажатии на этот обратный URL-адрес стек заполняется содержимым обратного URL-адреса, на который нажал пользователь (который содержит всю информацию из стека после отображения обратной ссылки).

Это вполне понятно, поскольку клик по ссылке — это четкое состояние, когда веб-разработчик точно знает, где «находится» пользователь в данный момент — абсолютно независимо от того, что пользователь делал раньше (например,нажав кнопку «Назад» в браузере несколько раз).Затем на основе этого нового состояния строится стек навигации.

Резюме:Становится ясно, что это будет не лучшим решением.Но это позволяет хранить в стеке дополнительную информацию, такую ​​как параметры страницы и некоторые другие полезные вещи (возможны дальнейшие разработки).

Итак, каковы были ваши решения этой проблемы?

ваше здоровье,

мана

Это было полезно?

Решение

Решение со стеком звучит интересно, но оно, вероятно, сломается, если пользователь решит «параллельно» перемещаться по разным вкладкам или использовать закладки.

Боюсь, я не очень понимаю, зачем сохранять все это состояние для каждого пользователя:в идеале Интернет должен следовать Принцип ОТДЫХА и быть полностью апатридом.Таким образом, один URL-адрес должен идентифицировать один ресурс без необходимости хранить историю навигации каждого пользователя.

Если ваше веб-приложение в значительной степени зависит от AJAX, вы можете попытаться реализовать что-то вроде GMail (правда, не так просто...), где каждое изменение в интерфейсе отражается в изменении URL-адреса страницы.Таким образом, каждая страница идентифицируется текущим URL-адресом, и пользователь может одновременно перемещаться по ней или использовать кнопку «Назад», как обычно.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top