Как отключить диалоговое окно с предупреждением об обратной отправке в браузере

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

Вопрос

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

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

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

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

Решение

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

Другие советы

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

1) Пользователь заполняет форму и отправляет данные по ПОЧТЕ.

2) Серверная часть получает данные и воздействует на них.

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

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

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

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

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

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

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

Вы могли бы попробовать:

window.opener.location = '#';

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

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

<script>
if(window.history.forward(1) != null)
                 window.history.forward(1);
</script>
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top