Deshabilitar botón "Atrás" del navegador
El botón "Atrás" es una parte esencial para navegar a través de diversos sitios web. De cualquier forma para ciertas aplicaciones web usar el botón "Atrás" puede provocar resultados inesperados.
Por ejemplo, si se está desarrollando una encuesta y el usuario tiene la opción de ir atrás o adelante en las preguntas, al final habrá un botón donde pueda mandar sus resultados los cuales serán almacenados en una base de datos, pero qué pasaría si este regresa a atrás mediante el botón del navegador, el usuario tendría la opción de cambiar sus resultados y nuevamente mandarlos, lo cual duplicaría la información en la base de datos.
Existen varias formas de solucionar este problema:
Solución 1: Utilizar JavaScript
Forma 1:
<body onLoad=”history.go(+1)”>
Forma 2:
onLoad="if(history.length>0)history.go(+1)"
Forma 3:
<script type="text/javascript">
window.history.forward(1);
</script>
Forma 4:
<script type="text/javascript">
history.forward();
</script>
Solución 2: C#
Con la Parte 1 es suficiente, pero por si en algún navegador no llegará a funcionar correctamente se utiliza la Parte 2. La función del siguiente código hace que la página expire cuando el usuario hace clic en el botón "Atrás" del navegador.
Por ejemplo, si se está desarrollando una encuesta y el usuario tiene la opción de ir atrás o adelante en las preguntas, al final habrá un botón donde pueda mandar sus resultados los cuales serán almacenados en una base de datos, pero qué pasaría si este regresa a atrás mediante el botón del navegador, el usuario tendría la opción de cambiar sus resultados y nuevamente mandarlos, lo cual duplicaría la información en la base de datos.
Existen varias formas de solucionar este problema:
Solución 1: Utilizar JavaScript
Forma 1:
<body onLoad=”history.go(+1)”>
Forma 2:
onLoad="if(history.length>0)history.go(+1)"
Forma 3:
<script type="text/javascript">
window.history.forward(1);
</script>
Forma 4:
<script type="text/javascript">
history.forward();
</script>
Solución 2: C#
Con la Parte 1 es suficiente, pero por si en algún navegador no llegará a funcionar correctamente se utiliza la Parte 2. La función del siguiente código hace que la página expire cuando el usuario hace clic en el botón "Atrás" del navegador.
protected void Page_Load(object sender, EventArgs e)
{
// Parte 1
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.SetExpires(DateTime.Now.AddSeconds(-1));
Response.Cache.SetNoStore();
Response.AppendHeader("Pragma", "no-cache");
if(Page.IsPostBack){
// Parte 2
if(isPageExpired()){
Response.Redirect("expired.htm");
} else {
Session["TimeStamp"] = DateTime.Now.ToString();
ViewState["TimeStamp"] = DateTime.Now.ToString();
}
}
}
private boolean isPageExpired()
{
if(Session["TimeStamp"] == null || ViewState["TimeStamp"] == null)
return false;
else if(Session["TimeStamp"] == ViewState["TimeStamp"])
return true;
else
return false;
}
gracias compa
ResponderEliminar