Estoy escribiendo una aplicación que, si el usuario devuelve el golpe, puede volver a enviar la misma información y estropear el flujo y la integridad de los datos. ¿Cómo lo desactivo para usuarios que están con y sin javascript activado?Deshabilitar el botón Atrás en el navegador
Respuesta
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 compatible con el botón de retroceso que el modelo de devolución de datos.
Nada triste por eso. –
Punto válido. Solo estoy triste. ;) –
Scott - ¿La capacidad de deshabilitar las barras de herramientas y hacer clic derecho en el menú IE específico entonces? He visto aplicaciones LOB que bloquean por completo la navegación, pero (una vez más, lamentablemente) también requieren que el usuario tenga IE. –
No deberías.
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á y intente a disable it pero, por supuesto, eso solo funcionará para los usuarios que tengan activado 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.
Hmmm ... el evento onbeforeunload también se invoca cuando se navega fuera de la página porque el usuario simplemente va a otra página (no solo porque el usuario presiona el botón Atrás), y se llamará al script. –
Puede publicar los datos de cada formulario en una _NUEVA ventana. Esto desactivará el botón Atrás en cada ventana, pero sin javascript podría ser difícil forzar el anterior.
Aquí hay un post anterior sobre el mismo: Prevent Use of the Back Button (in IE)
bueno, el motor de recomendación no lo mostró porque creé la publicación :( – Haoest
Le recomiendo a llegar a extremos heroicos para evitar que se rompa el botón de retroceso, es una forma segura de alienar a sus usuarios e incluso llegó a No. 1 en Jacob Neilsen's Top 10 Web Design Mistakes in 1999.
Quizás podría considerar más bien hacer la pregunta: "¿Cómo se puede 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.
No dijo que quería "romper" el botón Atrás. Quiere evitar un error común en el que fallan los patrones de diseño de Ajax porque un usuario presiona "Atrás", que significa "Deshace lo que acabo de hacer con tu aplicación Ajax" y en su lugar obtiene "Retroceder una solicitud HTTP ambigua y arbitraria". – pcorcoran
Para mí que solo dice "no quería romper el botón Atrás, solo quería romper el botón Atrás para evitar que se rompa". : S Es posible obtener AJAX/JavaScript y botones de retroceso para jugar bien, todo lo que sugiero es que esa sería la ruta que recomendaría seguir. –
mejor opción no es depender de las devoluciones de datos para controlar el flujo, sin embargo, si usted está atascado con ella (por ahora)
se puede usar algo como esto:
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.SetExpires(Now.AddSeconds(-1));
Response.Cache.SetNoStore();
Response.AppendHeader("Pragma", "no-cache");
Pronto se dará cuenta de que no funcionará en todos los navegadores, pero entonces se puede introducir un cheque 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;
}
que va a resolver un problema hasta cierto punto, código no verificado - sólo para los ejemplos de la pU rposes ..
4 chicos de Rolla escribió este artículo sobre cómo desactivar el botón de atrás hace mucho tiempo (en una galaxia muy, muy lejos): http://www.4guysfromrolla.com/webtech/111500-1.shtml
Lo que viene para arriba con para desactivar el botón de retroceso podría no parar 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 de nuevo a la página anterior como esperan que haga.
Se me ocurrió un pequeño truco que desactiva el botón Atrás usando JavaScript.He comprobado en el cromo 10, Firefox 3.6 y 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>
yo era capaz de lograr esto mediante el uso de:
Response.Cache.SetExpires(DateTime.MinValue);
Response.Cache.SetNoStore();
Cuando solía Response.Cache.SetCacheability (HttpCacheability.NoCache); me impidió descargar archivos de Office.
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. Así que he usado este
history.go(+1);
Esto enviará usuario con interés la "recepción", que se supone que vienen tras página "pago" si tratan de volver a la página de "pago" (sólo dar un pago, por ejemplo) . Usar con moderación, aunque
Ponemos enlace
navegador Desactivar la funcionalidad del botón de vuelta usando JavaScript en asp.net | ASP.Net botón atrás del navegador desactivar (usando javascript)
http://www.aspdotnet-suresh.com/2011/11/disable-browser-back-button.html
Es posible desactivar el botón atrás en todos los principales navegador. Simplemente usa valores hash para desactivar completamente el botón Atrás. sólo hay que poner 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>
Difícil ... pero funciona ... –
@Ankit: Brilliant! ¡Salvó mi vida! ¡¡¡Gracias!!! – Emma
no funciona correctamente en todos los casos, es decir, cromo, safari. –
- 1. Cómo deshabilitar el botón Atrás en el navegador cuando el usuario cierra sesión en asp.net C#
- 2. ASP.net simular el botón Atrás del navegador
- 3. GWT botón Atrás navegador
- 4. Deshabilitar el botón Atrás y Adelante en UIToolBar en UIWebview
- 5. Botón Atrás (Comportamiento del navegador)
- 6. ¿Puedes deshabilitar el botón Atrás en un asistente JFace?
- 7. ¿Cómo puedo simular el botón Atrás del navegador en Capibara?
- 8. ¿Cómo se emula el botón Atrás del navegador en HtmlUnit?
- 9. ¿Cómo funciona el botón Atrás en un navegador web?
- 10. ¿Qué sucede cuando presiono el botón ATRÁS del navegador?
- 11. Interceptar el botón Atrás
- 12. negociación contenido ignorado cuando se utiliza el navegador botón Atrás
- 13. dolor del botón Atrás del navegador
- 14. Borrar todos los campos en un formulario al volver atrás con el botón Atrás del navegador
- 15. Cómo deshabilitar el botón, haga clic en?
- 16. El botón de envío de formularios permanece deshabilitado cuando se usa el botón Atrás en Firefox
- 17. Android - Simular el botón Atrás
- 18. Perder datos de formulario al hacer clic en el botón Atrás en el navegador
- 19. Cómo actualizar la página al presionar el botón Atrás en el navegador (IE, Chrome, Firefox Safari)?
- 20. cómo desactivar el botón Atrás en Android
- 21. JSF commandLink, POSTing y el botón Atrás
- 22. PJAX: Problemas con el botón Atrás
- 23. Deshabilitar la memoria caché de página para forzar la carga de la página con el botón Atrás del navegador
- 24. El botón de navegación hacia atrás no se muestra, cómo agregar el botón Atrás a UINavigationItem
- 25. IFrame Botón Atrás
- 26. ¿Cómo deshabilitar u ocultar por completo el botón Atrás en QWizard?
- 27. No se puede deshabilitar la animación de transición cuando se hace clic en el botón Atrás
- 28. Javascript: Cambiar la función del botón Atrás del navegador
- 29. Phonegap Android Botón Atrás - cerrar la aplicación con el botón Atrás en la página principal
- 30. El botón Atrás de UINavigationController desaparece?
Si estoy usando su sitio, el botón de retroceso sigue siendo mío. No te metas con lo que es mío ... ;-) – Shog9
Esta es la pregunta incorrecta. Lo que debe hacer es diseñar la aplicación de modo que cuando se reenvía la información, la aplicación la reconozca y actúe de manera adecuada. – reinierpost