Как отключить диалог предупреждения о возврате в браузере - PullRequest
1 голос
/ 18 сентября 2008

У меня есть приложение asp.net, которое работает исключительно на IE7 (внутренний веб-сайт).

Когда пользователю нужно ввести данные, я открываю дочернее окно с формой. Когда форма закрывается, она вызывает javascript: window.opener.location.reload (true), чтобы новые данные отображались на главной странице.

Проблема в том, что браузер жалуется на то, что должен перепостить страницу. Есть ли способ отключить эту функцию?

Ответы [ 7 ]

4 голосов
/ 18 сентября 2008

Нет, но есть решение. Обычно считается хорошим дизайном использовать перенаправление 302 сразу после того, как кто-то публикует данные на странице. Это предотвращает появление этого всплывающего окна. Позвольте мне уточнить.

1) Пользователь заполняет форму и отправляет данные через POST.

2) Бэкэнд получает данные и действует на них.

3) Вместо того, чтобы возвращать контент пользователю, серверная часть выдает редирект 302, как только завершает обработку страницы (возможно, перенаправляет пользователя обратно на тот же самый URL, если это необходимо)

4) Страница, которую увидит пользователь, - это страница, которую вы сказали своему браузеру перенаправить на. Они загрузят перенаправленную страницу стандартным запросом GET. Если они попытаются обновить страницу, она не будет перепечатывать данные. Проблема решена.

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

asp.net mvc решает эту проблему, не только проблему ie7, но функцию безопасности большинства браузеров. Ни одного исправления, о котором я знаю, за исключением того, что вы можете просто обновить содержимое в главной форме с помощью js, а не перезагружать всю страницу

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

Это проблема с обычным способом «обратной передачи» ASP.NET. Если вам нужно перезагрузить страницу без этого предупреждения, эта страница должна исходить из GET, а не POST. Вы можете сделать Response.Redirect ("...") самостоятельно. Но это разрушит использование viewstate.

0 голосов
/ 03 декабря 2010

Если вы переходите со страницы 1 на страницу 2 и хотите отключить браузер от перехода на страницу 1, добавьте следующее вверху страницы 1.

<script>
if(window.history.forward(1) != null)
                 window.history.forward(1);
</script>
0 голосов
/ 18 сентября 2008

AFAIK, не через ваши скрипты.

Вы можете попробовать:

window.opener.location = '#';

Следует обойти браузер репостинга. И, при необходимости, вы можете изменить имя хеша.

0 голосов
/ 18 сентября 2008

Это потому, что страница в window.opener получена из запроса POST Может быть, вы можете использовать javascript: window.opener.location = window.opener.location; сделать только запрос GET, если данные могут быть получены без POST.

0 голосов
/ 18 сентября 2008

Я не верю, что есть способ сделать это. Вместо этого, почему бы не направить родительское окно на страницу без перезагрузки.

javascript: window.opener.location = 'ваш URL'

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