Лучшая практика: как управлять одновременностью браузера и навигации по сайту - PullRequest
0 голосов
/ 17 сентября 2008

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

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

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

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

Когда вы изменяете "Struts-Flow" - что может привести к использованию другой формы - эта информация будет потеряна.

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

Мое "решение" :

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

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

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

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

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

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

ура

маны * * тысяча пятьдесят-одна

1 Ответ

1 голос
/ 17 сентября 2008

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...