2012-04-26 8 views
6

I tienen una etiqueta <select> que contiene un solo elemento <option>:¿Por qué Chrome no muestra un elemento <option> seleccionado después de usar el botón Atrás?

<select id="someselect"> 
    <option value="2">B</option> 
</select> 

El único <option> es posterior reemplazados utilizando jQuery. La nueva lista de opciones contiene siempre la vieja opción:

selected = $('#someselect').val(); 
$('#someselect').html('<option value="1">A</option><option value="2">B</option>').val(selected); 

Esto funciona como se esperaba. Sin embargo, cuando se navega fuera de la página web en Google Chrome y luego hace clic en el botón Atrás, ocurre algo extraño. La etiqueta de selección vuelve a su estado inicial (tiene sentido), pero el elemento <option> solo no está seleccionado.

¿Cuál es la causa de este comportamiento en Chrome?

He creado un ejemplo de trabajo mínima: http://dl.dropbox.com/u/27566470/backdemo.html
Inicialmente sólo hay un único <option>. Primero haga clic en "hacer clic" para reemplazar las opciones (pero mantenga seleccionada la opción "B"), luego haga clic en "Google" para navegar, y luego use el botón Atrás de Chrome para ver la etiqueta <select> con solo una opción que no está seleccionado.

Editar: para aclarar, no estoy interesado en cómo solucionar esto. Tengo curiosidad por qué Chrome funciona así. Servir el DOM original (sin modificar) después de usar el botón Atrás tiene sentido, pero ¿por qué no se selecciona la única opción de selección?

+1

haga clic atrás, su página se 'renovará', puede obtenerla usando' GET' método en 'URL' y hacer un progreso o ' sessions' – Rafee

Respuesta

4

Para responder a mi propia pregunta, parece ser un error de Chromium. He archivado un error que actualmente está confirmado y seleccionado: http://code.google.com/p/chromium/issues/detail?id=125509
Así que espero que esto se solucione en el futuro :)

+0

Añadiendo el atributo autocomplete = "off" al formulario solucionado este problema para mi. – Boykodev

2

Porque cuando se utiliza el botón atrás del navegador que utilice la versión caché de la página, pero en su página hay datos dinámica que se perdió por lo que el navegador no encuentra el valor previamente seleccionado, se puede establecer mediante el uso de jQuery:

$(document).ready(function(){ 
    $('#someselect').val('0'); 
}); 
2

Como cada navegador que navega fuera del documento (# aún está dentro) navega, carga la versión en caché del servidor y dice que Chrome modifica el DOM al seleccionar una opción que quita el atributo selected al elemento de opción seleccionado y cuando vuelvas carga nuevamente con el selected

+0

Pero la cosa es que, al usar el botón Atrás, NO selecciona el elemento seleccionado original (no selecciona nada). Al usar una actualización normal en el sitio web, todo funciona como se espera. – Intru

+0

no, cuando el usuario vuelve manualmente la carga DOM con la propiedad 'seleccionada' en' B' –

+0

Sí, la etiqueta de opción tiene una propiedad seleccionada, pero no está seleccionada: ese es el problema. Firefox almacena en caché todo el DOM modificado (por lo que con las opciones 'a' Y 'b') y lo muestra. Chrome muestra el DOM original, pero no selecciona la opción original. – Intru

Cuestiones relacionadas