info how delete data clean firefox select caching

how - ¿Por qué Firefox no muestra la opción de selección predeterminada correcta?



how to erase history on mozilla (10)

Estoy haciendo una aplicación web para administrar el producto SKUS. Una parte de eso es asociar SKU con nombres de productos. En cada fila de una tabla, enumero un SKU y visualizo un cuadro <select> con nombres de productos. El producto que está actualmente asociado con ese SKU en la base de datos recibe un atributo como selected="selected" . Esto se puede cambiar y actualizar a través de AJAX.

Hay una gran cantidad de productos <option> s - 103 para ser exactos - y esta lista se repite en <select> en cada fila.

Desde otra entrada en la página, estoy usando las solicitudes jQuery AJAX para agregar nuevas SKU / asociaciones de productos, y para dejar en claro que se agregan al instante, las inserto en la parte superior de la tabla con un pequeño efecto de resaltado. A medida que el número de SKU aumenta más allá de 10 o más, si actualizo la página (que carga todo fuera de la base de datos ordenada por nombre de producto), Firefox comienza a mostrar algunas opciones incorrectas como seleccionadas por defecto. No es coherente sobre qué opción incorrecta muestra, pero parece estar mezclando las opciones que existían antes de volver a cargar la página.

Si inspecciono <select> usando Firebug, el select="selected" está en la etiqueta <option> correcta. Actualizar la página (o salir y escribir la URL de esta página para regresar) no hace que se muestre correctamente, pero la actualización (Ctrl + F5) sí lo hace .

Tanto Chrome como IE7 muestran esto correctamente en primer lugar.

Mi teoría es que esto es el resultado de una estrategia de caché defectuosa de Firefox. Suena bien? ¿Hay alguna manera en que pueda decir en mi código "si esta página se actualiza, conviértala en una actualización difícil, vuelva a cargar todo desde cero?"

Actualizar

Para resolver este problema, cambié de estrategias.

  • Anteriormente, puse una <select> con una larga lista de <option> en cada fila de la tabla, con el valor actual establecido como predeterminado
  • Ahora, puse el valor actual en un <span> . Si el usuario hace clic en un botón "cambiar", reemplazo el <span> con un <select> , y el botón "cambiar" se convierte en un botón "confirmar". Si cambian las opciones y hacen clic en confirmar, AJAX actualiza la base de datos, y <select> vuelve a ser un <span> , esta vez con el nuevo valor.

Esto tiene dos beneficios:

  • Soluciona el error descrito anteriormente
  • Requiere mucho menos elementos DOM en la página (todas esas <option> redundantes)

Aunque esta es una pregunta antigua, pero a continuación la solución puede ayudar a alguien

En Firefox, he notado que el atributo "seleccionado" no funcionará a menos que coloque la selección dentro de un formulario , donde el formulario tiene un atributo de nombre .

<form name="test_form" method="POST"> <select name="city"> <option value="1">Test</option> <option selected="selected" value="2">Test2</option> </selecct>

De nuevo recuerda:

  1. formulario debe tener el atributo " nombre " y
  2. " seleccionar " debe estar dentro del formulario.

Cada vez que tuve errores de opción de selección extraños en Firefox fue porque tenía varias opciones marcadas como seleccionadas. ¿Estás seguro de que solo uno está marcado como tal? Parece que podrías salir de wack con bastante facilidad si cambias eso con AJAX.


FYI: para evitar que Firefox restaure la opción previamente seleccionada después de volver a cargar la página, puede colocar el <form> completo que contiene las opciones <select> dentro de un <iframe> .

Cuando los recuadros de selección están en <iframe> y vuelves a cargar la página del contenedor, Firefox finalmente se comporta como TODOS los otros navegadores, simplemente restableciendo las opciones de selección.


Firebug tiene una función de desactivación de caché para exactamente este escenario.

La solución más profunda a largo plazo es determinar cómo establecer el lado del servidor sin caché en el servidor. ¿Qué servidor web estás usando?


Firefox preserva tus elementos de formulario seleccionados cuando actualizas. Es intencional. Ctrl + F5 es una actualización "difícil", que desactiva este comportamiento.

-

O Command + Shift + R si estás en una Mac


Lo hago funcionar poniendo el autocompletar = "off" en la entrada oculta.


Me he dado cuenta. Si coloca onunload o $ (window) .unload (jquery) en su HTML con encabezado sin caché, Firefox vuelve a cargar la página e inicializa DOM incluso desde el botón Atrás.


Tuve el mismo problema. Estaba intentando cambiar el valor de la selección según la opción que haya seleccionado = "seleccionado", pero Firefox no funcionaba. Siempre sería el predeterminado a la primera opción.

Chrome, Safari, etc. funcionó cuando hice esto:

$( ''option[value="myVal"]'' ).attr( ''selected'', ''selected'' );

... pero esto no estaba funcionando en FF.

Así que lo intenté:

$( ''option[value="myVal"]'' ).prop( ''selected'', ''selected'' );

y funciona.

jQuery v1.9.1


Tuve un problema similar, pero después de agregar el atributo autocomplete="off" HTML a cada etiqueta de selección funcionó. [Estaba usando Firefox 8]


Una manera fácil de evitar que Firefox guarde en el caché la última opción seleccionada es eliminar todos los elementos de opción en la descarga de la página. Por ejemplo (asumiendo jQuery):

$(window).unload(function() { $(''select option'').remove(); });