Para las Pymes en mi actual lugar de trabajo que desee probar y deshabilitar el botón atrás para ciertas páginas. Tenemos una página donde el usuario hace algunas selecciones y se somete a trámite. En algunos casos tienen que escribir un comentario en otra página.

Lo que los usuarios han averiguado es que ellos no tienen que escribir un comentario, si presentan la información e ir a la página con el comentario y, a continuación, pulsa el botón atrás para volver a la página anterior.

Sé que hay varias soluciones a este (y muchos de ellos son mucho más elegante, a continuación, deshabilitar el botón atrás), pero esto es lo que me queda. Es posible prevenir a alguien de volver a la página anterior a través de la alteración en el comportamiento del botón atrás. (como un presente -> return false sorta cosa).

Debido a la doble publicación de información que no puede volver a la página anterior y, a continuación, mueva a la actual. Sólo puedo no la tienen directa de distancia de la página actual. He buscado en Google, pero yo sólo vi los posts diciendo que siempre se puede volver a la página anterior. Tenía la esperanza de que alguien tiene algo de loco kung foo js habilidades que pueden hacer que esto sea posible.

Entiendo que todo el mundo dice que esto es una mala idea, y estoy de acuerdo, pero a veces uno tiene que hacer lo que te dicen.

4GuysFromRolla hizo un examen exhaustivo de «Deshabilitar el Botón Atrás.» <4guysfromrolla.com/webtech/111500-1.shtml> le recomiendo que lea el artículo, también se dice que por qué no va a funcionar (en todos los escenarios).
+1 en la simpatía por tener que DTWT a veces.

OriginalEl autor kemiller2002 | 2008-09-10

14 Comentarios

  1. 41

    No hacer esto, simplemente no. Es malo el diseño de la interfaz y las fuerzas del navegador del usuario a comportarse de una manera que ellos no esperan.

    Yo consideraría cualquier secuencia de comandos que ha detenido correctamente mi espalda botón de trabajar para ser un hack, y yo esperaría que el equipo de IE a la versión de seguridad-solución para él.

    El botón atrás es parte de su programa de interfaz, no de su sitio web.

    En tu caso concreto, creo que la mejor apuesta es para agregar un evento de descarga de la página en la que advierte al usuario si no ha completado el formulario. El botón atrás no sería afectado y el usuario será advertido de su acción.

    Keith es irregular. Los 4 Chicos artículo anteriormente se hace referencia incluso termina con: «Después de mi exhaustiva búsqueda encontré que todavía no hay manera de verdaderamente deshabilitar el botón atrás para todos los casos.» Doh! No necesito leer dos artículos que lee la última!
    acordado Keith. Hemos sido a través de aproximadamente la misma situación en mi trabajo y después de un largo tiempo nos dimos cuenta de que habría sido más fácil para refactorizar la aplicación no es necesario el botón atrás de la movilidad.
    Cuando presione el botón atrás y el sitio web de gotas de una «Página no válida» error, no lo veo como algo inesperado, me doy cuenta de que he hecho las cosas mal, creo que la mayoría de los usuarios estarían de acuerdo. Se siente culpable por tratar de reescribir la historia.
    sí, y esa es la forma estándar de hacerlo. Los usuarios todavía pueden regresar y seguir yendo, su navegador no volver a cargar las páginas.

    OriginalEl autor Keith

  2. 5

    Nah, estás condenada. Incluso si usted hace estallar la página en un navegador diferente y se escondió en el botón atrás, siempre hay la tecla de Retroceso.

    El problema con los de marketing y análisis de los tipos es que algunos de ellos no entienden el concepto fundamental de la web de ser apátridas. Ellos no entienden que la página es totalmente, totalmente inconsciente de que el navegador usando y el control absoluto del navegador es totalmente fuera de la capacidad de las páginas web.

    La mejor manera de desalentar a sus usuarios a pulsar el botón para asegurarse de que su página se pierde todos sus datos cuando se pulse atrás, por ejemplo, la página de los comentarios es el único punto donde puede guardar los datos, y si lo hacen, presione el botón atrás lo que tienen que hacer todo todo de nuevo (creo que a lo largo de las líneas de pragma: nocache).

    Los usuarios se quejan de que, seguro, pero ellos son la razón de que esta godforsaken requisito existe, ¿verdad?

    Generalmente los usuarios reales, no piden estúpido de mierda, como que, a pesar de que…

    OriginalEl autor Jon Limjap

  3. 4

    He visto esto antes:

    window.onBack = history.forward();

    Es definitivamente un sucio hack y, si es posible, me gustaría intentar no deshabilitar el botón atrás. Y el usuario puede probablemente todavía conseguir alrededor de él con bastante facilidad. Y en función de almacenamiento en caché, no se sabe si el código del servidor será procesada o si la caché de la página con JavaScript se ejecutará primero.

    Así que, sí, utilice a su propio riesgo 🙂

    Sería su código de romper este «requisito»? «Debido a la doble publicación de información que no puede volver a la página anterior y, a continuación, mueva a la actual. Sólo puedo no la tienen directa de distancia de la página actual»
    He utilizado una aplicación web que hice antes y era una de las cosas más frustrantes de los siglos.
    De acuerdo, yo odio los sitios que hacen esto, creo que rompe la web. Estaba también involucrado en los requisitos del proyecto que se utiliza esta técnica en particular 🙂
    El código de ejemplo no tiene sentido. Se crea una nueva variable global llamada «onBack» y asigna «indefinido», como la historia.forward() no devuelve ningún valor. La idea podría haber sido window.onback = history.forward;, (llamando a la ventana.cuando la onback se dispara el evento – que no iba a funcionar, ya que no hay onback evento). Lo que hace el código todavía funciona como llamada a history.forward(), que envía al usuario a la página que estaba antes de hacer clic en el botón atrás…
    De lo contrario, estoy de acuerdo con que es una mala idea 😉

    OriginalEl autor David Mohundro

  4. 4

    Se me ocurrió un pequeño hack que deshabilita el botón atrás el uso de JavaScript. Lo he comprobado en chrome 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";
    }
    //If you want to skip the auto-positioning at the top of browser window,you can add the below code:
    window.location.hash=' ';
    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 the back button!
    </body>
    </html>
    en IE9, es la causa de la página para desplazarse a la parte superior y no me deja desplazar la página

    OriginalEl autor Yossi Shasho

  5. 3

    ¿Tiene usted acceso para el servidor con el código fuente? Si es así, usted puede poner una marca en la primera página que redirige a la segunda página si la información ha sido presentada ya (tendrás que usar sesiones para esto, obviamente). En un trabajo anterior, esta es la forma en que manejan multi-paso de aplicaciones (aplicación como en la solicitud de aceptación).

    OriginalEl autor Brian Warshaw

  6. 2

    Podría mover el comentario a la página anterior y hacer que sea un campo obligatorio no?

    Deshabilitar el botón atrás no funcionará.

    OriginalEl autor Joel Coehoorn

  7. 2

    Debido al aislamiento de seguridad de javascript en el navegador, usted no puede cambiar lo que el botón atrás.

    Tal vez usted podría almacenar algo en la sesión del usuario que indica que un comentario es necesario, y han de cualquier página de la aplicación que el usuario intenta cargar redirigir a la página de comentarios?

    Lo que si el usuario cierra su navegador cuando él/ella recibe tot página de comentarios?

    Sé que no te han dado una opción aquí, pero ya que lo que están pidiendo parece imposible…

    Tal vez usted podría simplemente no considerar el tema como terminado hasta que el usuario introduce los comentarios. Por lo tanto, usted necesita para mantener un seguimiento de los progresos de artículos y elementos completados, y hacer esa distinción en la interfaz de usuario, pero este podría ser el método más robusto.

    O simplemente poner el campo de comentarios en la página de formulario?

    OriginalEl autor pkaeding

  8. 2

    Lo que los usuarios han averiguado es
    que ellos no tienen que entrar en un
    comentario si que enviar la información
    y vaya a la página con el comentario
    y a continuación, pulse el botón atrás para volver
    a la página anterior.

    Entonces son probablemente también lo suficientemente inteligente como para el tipo de ‘sin comentarios’ en el campo de comentarios.

    Puede intentar forzar a la gente a añadir comentarios, pero usted probablemente va a terminar con la mala inutilizable software, molesta a los usuarios, y todavía no recibe comentarios. Usualmente, este es un buen momento para dar un paso atrás y reconsiderar lo que están haciendo los usuarios de su punto de vista.

    Esto también sólo los gritos de algunas malas código. Por que hay gente capaz de pasar por el comentario con un clic en el botón atrás? No se resuelve el código de malo por hackear el navegador del usuario.

    OriginalEl autor Peter Hilton

  9. 1

    Deshabilitar el botón atrás parece una especie de «fuerza bruta».

    Otra opción podría ser que usted podría saltar a un cuadro de diálogo modal que no tiene botones de comando, paseo de los usuarios a través del flujo de trabajo, y cerrar el cuadro de diálogo cuando se complete el proceso.

    Estoy totalmente de acuerdo con usted, pero me han dicho que esto es lo que yo estoy pegado con.
    Usted no está atrapado con ella-que no puede ser. No es una opción viable, válido o solución ética. CORREGIR EL CÓDIGO

    OriginalEl autor Guy Starbuck

  10. 1

    Debe garantizar su aplicación en contra de la doble presentación en lugar de romper la interfaz de usuario para ocultar el error.

    OriginalEl autor Kornel

  11. 0

    Simplemente no hay manera confiable de hacer esto. Usted no puede garantizar que el 100% del tiempo, se puede detener el usuario de hacer esto.

    Con eso en mente, vale la pena ir a extremadamente exótica soluciones para deshabilitar la «mayoría» de la época? Eso es para que usted decida.

    Buena suerte.

    OriginalEl autor Matt Dawdy

  12. 0

    COMO una simple solución: probar este. Insertar un panel de actualización y un botón en el allí y el uso de javascript para ocultar y, a continuación, pulse en la página de carga. Sí entiendo que va a hacer que tu página para enviar de nuevo a la carga y puede que no funcione si javascript está deshabilitado, pero sin duda le ayudará a lograr un medio decente respuesta a la parte de atrás del botón de edición. Andy

    OriginalEl autor Andy

  13. 0

    Usted puede evitar volver a la página anterior. location.replace() reemplaza la página actual de la historia de la entrada con una nueva página, así que…

    page1.html: el usuario hace clic en un vínculo que va a page2.html

    page2.html: usuario hace clic en un enlace que llama location.replace('page3.html');

    page3.html: usuario hace clic en botón atrás y se va a page1.html

    Esto puede no encajar bien con hacer un POST, pero usted podría publicar los datos de un servicio web a través de AJAX, entonces la ubicación de las llamadas.replace()

    OriginalEl autor Webveloper

  14. 0

    Si usted está comenzando una nueva aplicación web desde cero, o usted tiene el tiempo suficiente para reconstruir tu aplicación, puedes usar JavaScript y AJAX para evitar el historial del explorador, atrás, adelante y funciones.

    • Abrir la aplicación en una nueva ventana, ya sea antes o inmediatamente después de iniciar sesión.
    • Si lo desea, utilice la ventana de opciones para ocultar la barra de navegación (con los botones atrás y adelante).
    • Uso de AJAX para todas las solicitudes del servidor, sin cambiar la ventana de ubicación de la URL.
    • El uso de una simple web de la API para obtener los datos y realizar acciones, y hacer que la aplicación a través de JavaScript.
    • Sólo habrá una dirección URL en la ventana de la historia.
    • Los botones atrás y adelante no hará nada.
    • La ventana puede ser cerrada de forma automática en el registro.
    • Ninguna información se filtró a la historia de navegador, que puede ayudar con la seguridad.

    Esta técnica responde a la pregunta, sino que también contradice la mejor práctica de varias maneras:

    • Los botones atrás y adelante debe comportarse como se espera.
    • Una aplicación no debería abrir nuevas ventanas del navegador.
    • Una aplicación debe funcionar sin JavaScript.

    Por favor considerar cuidadosamente sus necesidades y sus usuarios antes de utilizar esta técnica.

    OriginalEl autor Sam Watkins

Dejar respuesta

Please enter your comment!
Please enter your name here