2012-05-09 7 views
11

Sono sicuro che tutti conoscono questo comportamento. Compila un modulo sul Web e lo invii. Dopo l'invio, riconosci che hai inserito dati errati. Quindi, fai clic sul pulsante Indietro del browser. Quindi, a volte il modulo ha ancora i dati che hai inserito (cosa ti aspetti in questa situazione) e talvolta no.Perché talvolta i moduli HTML vengono cancellati quando si fa clic sul pulsante Indietro del browser

Impossibile trovare alcuna connessione quando è deselezionata e quando no.

Alcune risposte che ho trovato su internet/StackOverflow:

  • sulle connessioni HTTPS, le forme sono sempre cancellati
  • quando si utilizzano siti web dinamici con le sessioni, le forme sono sempre cancellati

Ma entrambi di loro sono sicuramente sbagliati. Ho visto siti (come uno dei miei) che mantiene i dati del modulo dopo il browser e utilizzano https e utilizzano sessioni.

Quindi per favore: qualcuno può spiegarmi come i browser gestiscono questa roba?

A proposito: il mio compito è quello di assicurarsi che i dati del modulo siano non cancellati.

risposta

6

Non riesco a fornire la risposta definitiva per tutti gli scenari.

Come sviluppatore web, qui è la regola che generalmente seguono per i siti che sviluppo, per raggiungere l'obiettivo di non lasciare l'utente perde i dati:

  • Disabilita tutto caching (via HTTP header) sulla pagina voglio conservato.
  • Cattura tutti i dati in sessione (o altra memoria temporanea) quando il modulo viene inviato.
  • Se l'utente naviga al contrario, il browser richiede una nuova versione della pagina (perché non la si memorizza nella cache).
  • La pagina ha la logica per cercare la sessione/database/ovunque e ripopola tutti i campi in base all'ultimo stato di input. Se nella pagina c'erano input dinamici, dovresti avere abbastanza dati per ricrearli.
  • Al termine del processo, utilizzare un modello POST/Redirect/GET per cancellare i dati della sessione e rendere difficile all'utente tornare alla pagina originale.

Alcune risposte che ho trovato su internet/StackOverflow:
1. sulle connessioni HTTPS, le forme sono sempre cancellati
2. quando si utilizzano siti web dinamici con le sessioni, le forme sono sempre cancellati

Credo che il n. 1 varia a seconda del browser/impostazioni di sicurezza/scenario.

L'ipotesi n. 2 non è certamente vera in tutti i casi (il modello che ho appena descritto utilizza la sessione e le forme dinamiche).

+0

Grazie per la risposta. Certo, hai perfettamente ragione nel tuo modo di farlo. Ma a volte questo è un bel po 'di lavoro (specialmente se è necessario aggiungere questo comportamento in seguito). La vita potrebbe essere molto più semplice se solo il browser potesse fare il lavoro. Questo è dove la mia domanda si rivolge a. C'è un modo per far funzionare il browser !? – Gerwald

2

È un problema di browser. I browser si comportano diversamente quando si fa clic sul pulsante Indietro. Questa domanda è stata posta prima qui Losing form data when clicking the back button on browser

+0

ok, quando si tratta di un problema del browser: quale browser funziona come? per esempio. Safari mobile? E se sì, come far funzionare il browser come voglio? (mantenendo i dati) – Gerwald

0

Trovo strano che il link che hai fornito sia stato chiesto prima di questo, ma quello dice la sua risposta da questo. Oh e nessuna risposta accettata o .....

+0

Per quanto riguarda _non risposta accettata_: la risposta di Tim è stata ottima, ma - come ha anche accennato, è solo una supposizione, non una risposta definitiva. – Gerwald