Ir directamente al contenido de esta página

codexexempla.org

Cómo hacer correctamente una redirección

La respuesta sería muy sencilla: no hacerlo. Resulta mucho mejor dejar el documento existente con un vínculo a la nueva dirección.

Sólo que en algunas ocasiones podemos vernos forzados a ello, y no disponer de la opción de encargar la tarea al servidor.

Cuando no nos preocupábamos por la accesibilidad, podíamos optar por un <meta http-equiv="refresh" content="5; url=http://www.nuevositio.com/"> y catapultar al usuario a la nueva página tras cinco segundos. De la misma manera podíamos hacerlo con el método assign() o directamente especificando un valor nuevo a location.href desde un script.

Por cuestiones de accesibilidad la redirección no debería ser automática si atendemos a la pauta 7.5 de las WCAG 1.0:

Until user agents provide the ability to stop auto-redirect, do not use markup to redirect pages automatically.

[Hasta que los agentes de usuario no proporcionen la capacidad de detener la autoredirección, no emplee marcado para redirigir páginas automáticamente.]

Habría que añadir que tampoco se haga por medio de un script.

Pero como vivimos en un mundo imperfecto, si hemos de hacerlo al menos que sea de la forma más usable posible, que no es ninguna de las que he indicado antes. ¿Por qué? Pues porque si se redirige automáticamente a una página y el usuario quiere volver atrás en su historial, entra de nuevo en la redirección, volviendo al punto de partida.

Este vínculo lleva a una página en la que redirijo automáticamente a una tercera: compruébese lo que ocurre si se emplea el botón Atrás del navegador.

Firefox 2, muy inteligentemente, comprende lo que hago y elimina la página de redirección del historial. Opera 9.25 ejecuta la redirección la primera vez, pero no al volver a la página. Internet Explorer, sin embargo, nos encierra en un bucle.

Para asegurarnos de que esto no ocurra, podemos asegurarnos de sustituir la página de la redirección en el historial del navegador por la página de destino:


    window.onload= function () {
        location.replace('http://codexexempla.org/recursos/curso_acelerado/js/redirigir_05.php');
    }
        

Compruebe ahora el funcionamiento.

¿Ve? Ahora sí.

Volver al curso

(cc) CodexExempla.org, 2007–2024 Mapa del sitio | XHTML | CSS | AA