2010-01-14 12 views
6

Estoy desarrollando una aplicación web donde, debido al lento acceso a la base de datos, no todo el contenido de una página se carga inmediatamente sino dinámicamente cuando el usuario hace clic botón después de hacer una selección opcional.Diferencias en Internet Explorer y Firefox al cargar dinámicamente contenido adelante y atrás

Esto funciona bien. Sin embargo, después de cargar contenido dinámicamente, si navego a una página web diferente, luego navego hacia atrás; en Internet Explorer, el contenido cargado habrá desaparecido, es decir, la página se revertirá a la página recuperada originalmente. En Firefox (y Opera también), sin embargo, el contenido cargado seguirá allí, es decir, la página se verá como lo hacía antes de que navegara fuera de ella.

El comportamiento de Firefox es el comportamiento deseado en mi caso, ya que el usuario navega rutinariamente a las subpáginas y regresa a la página principal. Mi pregunta es, por lo tanto, ¿hay alguna manera de forzar a Internet Explorer a exhibir este comportamiento, o hay posibles soluciones para obtener el resultado deseado?

Respuesta

3

Aquí está mi solución solución para IE. Utiliza el hecho de que, incluso si el DOM se restablece al navegar y volver a una página, los valores del campo de entrada todavía se recuerdan.

Para cada elemento cargado dinámicamente, también tengo un campo de entrada oculto donde "guardo en caché" el valor cargado. Luego tengo una función transferFromCache() que copia los valores de cada campo de entrada oculto al elemento correspondiente. Esta función se ejecuta en init de página, que, en el caso de IE, está en la carga de la página Y cada vez que uno navega de regreso a la página.

Esta técnica probablemente también podría usarse para almacenar los valores de las variables de javascript.

2

No creo que haya un método para hacer que IE emule FF de esta manera. La razón es hacer con aspectos bastante fundamentales de los navegadores. FF usa un mecanismo para su historial de página llamado 'Fast DOM caching' que (desde mi entendimiento limitado) básicamente significa que cuando pone una página en el historial del navegador entonces almacenará el DOM actual (por lo que el estado actual de la página) en un serial formato, lo que significa que cuando la página se vuelve a cargar desde el historial, se conserva el estado y FF puede hacerlo mucho más rápido ya que ya se ha hecho mucho trabajo (se analiza el HTML en un DOM, etc.). En comparación, IE simplemente almacenará el HTML recibido inicialmente como su archivo de historial y lo volverá a cargar cuando navegue por el historial.

+0

Parece que, en lo que respecta a IE, esto es casi así, pero no del todo. Como ejemplo, en mi aplicación utilizo el filtrado y la paginación de JavaScript (de los contenidos en una tabla). Yo uso cuadros de entrada "select" para el filtrado. Tanto en IE como en FF, las opciones seleccionadas se recuerdan después de navegar y volver atrás. Yo uso variables de Javascript para el estado de paginación. Esta es información que se recuerda en FF, pero se restablece en IE. –

2

Aquí es un article about saving state in session variables, que puede ayudar

+0

Gracias. Este artículo parece describir el comportamiento de IE. En FF, javascript no se restablece al navegar y retroceder. Pero las soluciones podrían ser útiles en IE, podría intentar el segundo (usando campos de entrada ocultos para almacenar información). –

Cuestiones relacionadas