Cómo deshabilitar el cuadro de diálogo de advertencia de devolución de datos del navegador

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

Pregunta

Tengo una aplicación asp.net que se ejecuta exclusivamente en IE7 (sitio web interno).

Cuando un usuario necesita ingresar datos, aparece una ventana secundaria con un formulario.Cuando se cierra el formulario, llama a javascript:window.opener.location.reload(true) para que los nuevos datos se muestren en la página principal.

El problema es que el navegador se queja de que debe volver a publicar la página.¿Hay alguna forma de desactivar esta función?

¿Fue útil?

Solución

Es porque la página en Window.opener proviene de una solicitud de publicación, tal vez pueda usar javascript: window.opener.location = window.opener.location;hacer solo una solicitud GET si los datos se pueden recuperar sin una POST.

Otros consejos

No, pero hay una solución.Generalmente se considera un buen diseño utilizar una redirección 302 inmediatamente después de que alguien publica datos en una página.Esto evita que aparezca esa ventana emergente.Permítanme dar más detalles.

1) El usuario completa un formulario y envía datos vía POST.

2) El backend recibe los datos y actúa en consecuencia.

3) En lugar de devolver el contenido al usuario, el backend emite una redirección 302 tan pronto como termina de procesar la página (posiblemente redirigiendo al usuario exactamente a la misma URL, si es necesario)

4) La página que verá el usuario es la página a la que le indicó a su navegador que redirija.Cargarán la página redirigida con una solicitud GET estándar.Si intentan actualizar la página, no volverá a publicar los datos.Problema resuelto.

Este es un problema con la forma habitual de "devolución de datos" de ASP.NET.Si necesita recargar una página sin esta advertencia, esta página debe provenir de un GET, no de un POST.Podrías hacer un Response.Redirect("...") tú mismo.Pero esto destruirá el uso de viewstate.

asp.net mvc soluciona este problema, no es un problema exclusivo de ie7 sino una característica de seguridad de la mayoría de los navegadores.No conozco ninguna solución, excepto que podrías actualizar el contenido en el formulario principal con js en lugar de recargar toda la página.

No creo que haya una manera de hacerlo.En su lugar, ¿por qué no dirigir la ventana principal a una página sin recargar?

javascript:window.opener.location='tu URL'

AFAIK, no a través de tus guiones.

Podrías intentar:

window.opener.location = '#';

Debería evitar la reenvío del navegador.Y puede ajustar el nombre del hash según sea necesario.

Si pasa de la página 1 a la página 2 y desea impedir que el navegador regrese a la página 1, agregue lo siguiente en la parte superior de la página 1.

<script>
if(window.history.forward(1) != null)
                 window.history.forward(1);
</script>
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top