2010-01-14 10 views
6

Sto sviluppando un'applicazione web in cui, a causa dell'accesso lento al database, non tutto il contenuto di una pagina viene caricato immediatamente ma in modo dinamico quando l'utente fa clic su pulsante dopo aver fatto facoltativamente una selezione.Differenze in Internet Explorer e Firefox quando si carica dinamicamente il contenuto andando avanti e indietro

Questo funziona correttamente. Tuttavia, dopo aver caricato in modo dinamico il contenuto, se si passa a una pagina Web diversa, quindi si torna indietro, in Internet Explorer il contenuto caricato sarà scomparso, cioè la pagina sarà ritornata alla pagina originariamente recuperata. In Firefox (e anche Opera), tuttavia, il contenuto caricato sarà ancora lì, cioè la pagina apparirà come prima che io abbia navigato lontano da esso.

Il comportamento di Firefox è il comportamento desiderato nel mio caso, in quanto l'utente normalmente naviga alle sottopagine e torna alla pagina principale. La mia domanda è quindi, c'è un modo in cui posso forzare Internet Explorer a mostrare questo comportamento, o sono possibili soluzioni alternative per ottenere il risultato desiderato?

risposta

3

Ecco la mia soluzione alternativa per IE. Utilizza il fatto che, anche se il DOM viene ripristinato durante la navigazione e ritorno a una pagina, i valori dei campi di input vengono ancora ricordati.

Per ogni elemento caricato dinamicamente, dispongo anche di un campo di input nascosto in cui "memorizzo" il valore caricato. Quindi ho una funzione transferFromCache() che copia i valori da ciascun campo di input nascosto all'elemento corrispondente. Questa funzione viene eseguita a pagina init, che, nel caso di IE, viene caricata a pagina E ogni volta che si torna alla pagina.

Questa tecnica potrebbe probabilmente essere utilizzata per memorizzare anche i valori delle variabili javascript.

2

Non penso che ci sia un metodo per far sì che IE emuli FF in questo modo. La ragione è da fare con aspetti abbastanza fondamentali dei browser. FF utilizza un meccanismo per la sua cronologia delle pagine chiamata "Caching DOM veloce" che (dalla mia comprensione limitata) in pratica significa che quando inserisce una pagina nella cronologia del browser, allora memorizzerà il DOM corrente (quindi lo stato corrente della pagina) in un serializzato formato, il che significa che quando la pagina viene ricaricata dalla cronologia lo stato viene preservato e FF può farlo molto più rapidamente dato che molto lavoro è già stato svolto (analisi dell'HTML in un DOM, ecc.). In confronto, IE memorizzerà semplicemente l'HTML ricevuto inizialmente come file di cronologia e lo ricaricherà durante la navigazione nella cronologia.

+0

Sembra che, per quanto riguarda IE, questo è quasi così, ma non del tutto. Ad esempio, nella mia applicazione utilizzo il filtro javascript e l'impaginazione (dei contenuti in una tabella). Io uso "seleziona" le caselle di input per il filtraggio. Sia in IE che in FF, le opzioni selezionate vengono memorizzate dopo essere state allontanate e ricondotte. Uso le variabili javascript per lo stato di impaginazione. Questa informazione è ricordata in FF, ma resettata in IE. –

2
+0

Grazie. Questo articolo sembra descrivere il comportamento di IE. In FF, javascript non viene ripristinato quando si naviga indietro e indietro. Ma i workaround potrebbero essere utili in IE, potrei provare il secondo (usando i campi di input nascosti per memorizzare le informazioni). –

Problemi correlati