Considere una página web que tiene un menú de selección con un controlador de eventos JavaScript vinculado al evento onchange del menú que cuando se dispara recarga la página con una nueva cadena de consulta (utilizando el valor seleccionado en menú).Seleccionar el menú que no se restaura cuando se usa el botón Atrás
Edición: cuando el usuario pulsa el botón Atrás, el DOM página se restaura desde la memoria caché pero NO el estado del menú de selección.
navegadores afectados: Firefox y Safari (que utilizan una espalda/cache adelante)
Ejemplo:
<script language="javascript" type="text/javascript">
function reloadPage() {
var menu = document.getElementById("select1");
var val = menu.options[menu.selectedIndex].value;
window.location.href = 'test.html?select1=' + val;
}
</script>
<form action="#" method="get" name="form1">
<select name="select1" id="select1" onChange="reloadPage();">
<option value="A" selected>Option A</option>
<option value="B">Option B</option>
<option value="C">Option C</option>
<option value="D">Option D</option>
</select>
</form>
visualización de esta página y observe que la opción A se selecciona. Luego seleccione una opción diferente (por ejemplo, la opción C): la página se vuelve a cargar (con una cadena de consulta,? Select1 = C). Luego presione el botón Atrás - el menú de selección continúa mostrando la opción C como está seleccionado.
Pregunta: ¿Alguien sabe por qué el menú de selección no se restaura y cómo se podría resolver este problema? He usado JavaScript en el pasado para forzar los campos de formulario en una página para que coincida con la cadena de consulta, pero hay problemas con ese enfoque (es decir, FF y Safari normalmente no ejecutan el evento onload para la ventana al cargar una página desde el caché) y me parece un truco.
¿Alguna sugerencia?
Actualización: Sólo se me ha ocurrido que lo que podría estar sucediendo es la siguiente:
- opción C se selecciona
- la página se almacena en caché
- el JavaScript carga el nuevo URL
- pulsó el botón de volver
- la opción C es restaurada porque es lo que se almacena en caché antes de la JavaScript/página de recarga.
Así que creo que esto no es un problema del navegador que no restaura el estado del menú de selección, es un problema de sincronización.
¿Alguna vez resolvió esto con éxito? ¿Aún necesitas ayuda con esto? – jcolebrand