La migliore pratica:Come gestire la simultaneità della navigazione del browser e del sito web

StackOverflow https://stackoverflow.com/questions/77645

  •  09-06-2019
  •  | 
  •  

Domanda

È un problema ben noto a ogni sviluppatore web.Per quanto ho cercato di trovare una buona soluzione a questo problema, non ce n'era (o almeno non sono riuscito a trovarla).

Supponiamo quanto segue:

L'utente non si comporta come ci si aspettava. Il progetto attuale a cui sto lavorando utilizza una navigazione all'interno del portale web.Ma se l'utente utilizza il pulsante Indietro del browser, il tutto diventa pericoloso[?] e il risultato non è sempre prevedibile.

Abbiamo utilizzato il framework struts e memorizzato il back-url nei moduli - in alcuni punti, dove avevamo bisogno di un back-url - questo è stato renderizzato dal back-url di questo modulo.Poiché esisteva un solo campo per queste informazioni e quindi non era possibile tornare indietro di più passaggi.

Quando si modifica lo "struts-flow", il che potrebbe comportare l'utilizzo di a forma diversa - queste informazioni andranno perse.

Se l'utente osa inserire un file segnalibro da qualche parte all'interno della tua webapp: queste informazioni potrebbero non essere mai state impostate e ancora una volta il risultato sarà imprevedibile o non abbastanza flessibile!

La mia "soluzione":

Stavo memorizzando ogni pagina rilevante per la navigazione visitata dall'utente su un file come una pila stoccaggio nel sessione.Ciò significa che un percorso di navigazione viene raccolto e archiviato per navigazioni successive.

In qualsiasi pagina all'interno della webapp, in cui sono coinvolte le navigazioni all'indietro, ho utilizzato un tag creato da me che esegue il rendering del contenuto dello stack nell'URL.

E questo è tutto.Quando è stato fatto clic su questo URL posteriore, lo stack è stato riempito con il contenuto dell'URL posteriore cliccato dall'utente (che contiene tutte le informazioni dallo stack una volta eseguito il rendering del collegamento posteriore).

Questo è abbastanza chiaro, perché un clic su un collegamento è uno stato chiaro, in cui lo sviluppatore web sa esattamente dove "si trova" l'utente in questo preciso momento - assolutamente indipendente da qualunque cosa l'utente abbia fatto prima (ad es.premendo più volte il pulsante Indietro del browser).Quindi lo stack di navigazione viene costruito su questo nuovo stato.

Riprendere:Diventa chiaro che questa non sarà la soluzione migliore.Ma consente di memorizzare informazioni aggiuntive nello stack come parametri di pagina e altre cose utili (ulteriori sviluppi possibili).

Allora, quali sono state le vostre soluzioni a questo problema?

saluti,

mana

È stato utile?

Soluzione

La soluzione dello stack sembra interessante, ma probabilmente si romperà se l'utente sceglie di navigare "in parallelo" su schede diverse o utilizzando i segnalibri.

Temo di non capire davvero perché devi mantenere tutto questo stato per ciascun utente:idealmente il web dovrebbe seguire il Principio RIPOSO ed essere completamente apolide.Pertanto un unico URL dovrebbe identificare una singola risorsa, senza dover conservare la cronologia di navigazione di ciascun utente.

Se la tua app web fa molto affidamento su AJAX, potresti provare a implementare qualcosa come GMail (certo, non così facile...), in cui ogni modifica nell'interfaccia si riflette in una modifica nell'URL della pagina.Pertanto ogni pagina è identificata dall'URL corrente e l'utente può navigare contemporaneamente o utilizzare normalmente il pulsante Indietro.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top