volver net navegador evitar deshabilitar cache boton atras asp browser back-button

browser - net - deshabilitar la cache y el boton atras del navegador



Desactivar el botón Atrás en el navegador (13)

4 Chicos de Rolla escribieron este artículo sobre desactivar el botón Atrás hace mucho tiempo (en una galaxia muy lejana): http://www.4guysfromrolla.com/webtech/111500-1.shtml

Estoy escribiendo una aplicación que, si el usuario responde, puede reenviar la misma información y arruinar el flujo y la integridad de los datos. ¿Cómo lo desactivo para usuarios que están con y sin javascript activado?



Cualquier cosa que se te ocurra para deshabilitar el botón de retroceso podría no detener el botón Atrás en futuros navegadores.

Si está avanzado en el ciclo de desarrollo, le sugiero que pruebe algunas sugerencias anteriores, pero cuando tenga tiempo debe estructurar su flujo para que el botón Atrás no interfiera con la lógica de su sitio, simplemente lleva al usuario a la página anterior como ellos esperan que lo haga.



Es cierto, se debe agregar una validación adecuada para garantizar que los datos duplicados no estropeen las cosas. Sin embargo, como en mi caso, no controlo completamente los datos ya que estoy usando API de terceros después de mi formulario. Entonces usé esto

history.go(+1);

Esto enviará al usuario al "recibo" que se supone que vendrá después de la página de "pago" si intenta regresar a la página de "pago" (simplemente dando un pago, por ejemplo). Use escasamente, aunque


Es posible desactivar el botón Atrás en todos los principales navegadores. Simplemente usa valores hash para desactivar completamente el botón Atrás. Simplemente ponga estas 5 líneas de código en su página

<script> window.location.hash="no-back-button"; window.location.hash="Again-no-back-button";//for google chrome window.onhashchange=function(){window.location.hash="no-back-button";} </script>

Descripción detallada


La mejor opción es no depender de las devoluciones para controlar el flujo, sin embargo, si está atrapado con esto (por ahora)

puedes usar algo como esto:

Response.Cache.SetCacheability(HttpCacheability.NoCache); Response.Cache.SetExpires(Now.AddSeconds(-1)); Response.Cache.SetNoStore(); Response.AppendHeader("Pragma", "no-cache");

Pronto descubrirá que no funcionará en todos los navegadores, pero puede introducir un código en su código como:

if (Page.IsPostBack) { if (pageIsExpired()){ Response.Redirect("/Some_error_page.htm"); } else { var now = Now; Session("TimeStamp") = now.ToString(); ViewState("TimeStamp") = now.ToString(); } private boolean pageIsExpired() { if (Session("TimeStamp") == null || ViewState("TimeStamp") == null) return false; if (Session("TimeStamp") == ViewState("TimeStamp")) return true; return false; }

Eso solucionará el problema en cierta medida, Código no verificado, solo para fines de ejemplos.


No deberias.

Puede adjuntar un script al evento onbeforeunload de una página y confirmar con el usuario que es lo que quiere hacer; y puede ir un poco más allá e intentar desactivarlo, pero, por supuesto, eso solo funcionará para los usuarios que tengan activado el javascript. En su lugar, revise la reescritura de la aplicación para que no realice transacciones en cada envío de página, sino solo al final del proceso.


No es posible, por desgracia. Sin embargo, considere su modelo de navegación de aplicaciones. ¿Estás usando Post / Redirect / Get PRG Model? http://en.wikipedia.org/wiki/Post/Redirect/Get ?

Este modelo es más amigable con el botón de retroceso que el modelo de Postback.


Pude lograr esto usando:

Response.Cache.SetExpires(DateTime.MinValue); Response.Cache.SetNoStore();

Cuando utilicé Response.Cache.SetCacheability (HttpCacheability.NoCache); me impidió descargar archivos de Office.


Puede publicar los datos en cada formulario en una ventana _NEW. Esto desactivará el botón Atrás en cada ventana, pero sin javascript podría ser difícil forzar el anterior.


Se me ocurrió un pequeño truco que desactiva el botón Atrás usando JavaScript. Lo revisé en Chrome 10, Firefox 3.6 e IE9:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <title>Untitled Page</title> <script type = "text/javascript" > function changeHashOnLoad() { window.location.href += "#"; setTimeout("changeHashAgain()", "50"); } function changeHashAgain() { window.location.href += "1"; } var storedHash = window.location.hash; window.setInterval(function () { if (window.location.hash != storedHash) { window.location.hash = storedHash; } }, 50); </script> </head> <body onload="changeHashOnLoad(); "> Try to hit back! </body> </html>


Te recomiendo encarecidamente que tomes medidas heroicas para evitar romper el botón Atrás, es una manera segura de alienar a tus usuarios e incluso llegar al No.1 en los 10 errores de diseño Web más importantes de Jacob Neilsen en 1999 .

Tal vez podría considerar más bien hacer la pregunta: "¿Cómo evitar romper el botón Atrás para <insertar su escenario aquí?"

Si la respuesta de Scott llega cerca de la marca, considere cambiar su flujo al modelo PRG. Si es algo más, da un poco más de detalles y ve cómo podemos ayudar.