Кнопка возврата браузера отключается случайным образом в приложении ASP.NET - PullRequest
4 голосов
/ 15 июня 2011

В моем двухстраничном веб-приложении пользователи постепенно вводят информацию и делают выбор на первой странице. По завершении они нажимают кнопку «Создать», которая переходит на вторую страницу. Пользователи печатают эту страницу и нажимают на браузерную стрелку Назад , чтобы вернуться на первую страницу без изменений.

После нескольких сгенерированных страниц (2 или 3) нажатие Назад просто отключает значок, не возвращаясь назад. Они должны вручную вернуться на первую страницу, повторно введя свою информацию и выбор.

Я обнаружил, что стрелка вниз справа от стрелок назад / вперед (IE8), которая показывает непосредственную историю, обычно включает все «предыдущие» страницы. Но когда кнопка «Назад» собирается отключиться при нажатии, история показывает только текущий сайт.

Какие события, скрипты, заголовки и т. Д. Очищают историю для текущего сайта? Это происходит в IE7 и IE8 на WinXP и Win7. В FireFox кнопка не отключалась, но и ничего не делала. Пользователи сообщают об этом как о недавнем, и я вносил изменения в приложение, но это влияет только на HTML-код на второй странице (но не на сценарии). Возможно, это проблема с кодом, если она недавно, но я не уверен, что искать при двойной проверке моих последних изменений.

Ответы [ 2 ]

5 голосов
/ 15 июня 2011

Какая версия IE?

Внутренне IE поддерживает ограниченный объем данных в журнале путешествий (он же стек назад / вперед).Страницы ASP.NET с огромными формами обратной передачи часто превышают этот предел, стирая стек истории.

В IE6 и IE7, если есть поле ввода формы со значением, превышающим 523 659 символов, при выходе из страницы IE может очистить журнал путешествий текущего сеанса (аналогично истории), отключив обратнуюи кнопки «вперед».

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

1 голос
/ 15 июня 2011

Как правило, если вы хотите, чтобы ваши пользователи перемещались назад и вперед между страницами, я бы давал им ссылки на странице, выполняющей работу (без использования javascript:back()), вместо использования навигации браузера.

Что происходит, скорее всего, так это то, что постбэки одной страницы иногда считаются страницами, иногда нет. Если пользовательское действие загружает страницу с тем же URI и строкой запроса, большинство браузеров считают, что «та же страница», даже если ВСЕ могло измениться. Обычно это происходит из-за интенсивного использования MultiViews с информацией о текущем представлении, хранящемся в ViewState или Session; навигация по этой странице не меняет URI, к которому осуществляется навигация, поэтому браузер не регистрирует каждую новую загрузку как уникальную.

Если вам действительно требуются надлежащие функции возврата и назад, вам необходимо убедиться, что каждая ссылка приведет к тому, что браузеру будет приказано перейти на другой URI, нежели текущая страница. Вы можете сделать это, добавив элемент строки запроса, который будет присутствовать в каждой ссылке на другой странице или в представлении, который будет автоматически увеличиваться при каждом щелчке пользователя. Это дает браузеру новый URI каждый раз. Вы используете только существующий элемент QueryString для создания нового в URI ваших ссылок. Это может быть громоздким, и более простое решение состоит в том, чтобы просто обеспечить навигацию по странице и запретить пользователям нажимать «Назад».

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