Melhor prática:Como lidar com a simultaneidade de navegação do navegador e do site

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

  •  09-06-2019
  •  | 
  •  

Pergunta

É um problema bem conhecido de todo desenvolvedor web.Por mais que tentei encontrar uma boa solução para esse problema, não encontrei nenhuma (ou pelo menos não consegui encontrar).

Vamos supor o seguinte:

O usuário não se comporta como era esperado. O projeto real em que estou trabalhando usa uma navegação no portal da web.Mas se o usuário usar o botão Voltar do navegador, tudo fica em risco[?] e o resultado nem sempre é previsível.

Usamos a estrutura struts e armazenamos o back-url em formulários - em alguns lugares, onde precisávamos de um back-url - ele foi renderizado a partir do back-url deste formulário.Pois havia apenas um único campo para esta informação e portanto não era possível voltar vários passos.

Quando você altera o "fluxo de struts" - o que pode resultar no uso de um forma diferente - esta informação será perdida.

Se o usuário se atrever a colocar um marca páginas em algum lugar do seu aplicativo da web - essas informações podem nunca ter sido definidas e, novamente, o resultado será novamente imprevisível ou não flexível o suficiente!

Minha "solução":

Eu estava armazenando todas as páginas relevantes para a navegação que o usuário visitou em um semelhante a uma pilha armazenamento no sessão.Isso significa que um caminho de navegação é coletado e armazenado para navegações posteriores.

Em qualquer página do webapp, onde estão envolvidas navegações de retorno, usei uma tag feita por mim mesmo que renderiza o conteúdo da pilha no URL.

E é isso.Quando esse back-url foi clicado, a pilha foi preenchida com o conteúdo do back-url clicado pelo usuário (que contém todas as informações da pilha depois que o back-link foi renderizado).

Isto é bastante claro, porque um clique em um link é um estado claro, onde o desenvolvedor web sabe exatamente onde o usuário "está" neste exato momento - absolutamente independente de tudo o que o usuário fez antes (por exemplo,apertando o botão Voltar do navegador várias vezes).Então a pilha de navegação é construída sobre esse novo estado.

Retomar:Torna-se claro que esta não será a melhor solução.Mas permite armazenar informações adicionais na pilha, como parâmetros de página e algumas outras coisas úteis (possíveis desenvolvimentos adicionais).

Então, quais foram suas soluções para esse problema?

saúde,

mana

Foi útil?

Solução

A solução de pilha parece interessante, mas provavelmente irá quebrar se o usuário optar por navegar "em paralelo" em abas diferentes ou usando marcadores.

Receio não entender por que você precisa manter todo esse estado para cada usuário:idealmente, a web deve seguir o Princípio REST e ser completamente apátrida.Portanto uma única URL deve identificar um único recurso, sem a necessidade de manter o histórico de navegação de cada usuário.

Se seu aplicativo web depende muito de AJAX, você pode tentar implementar algo como GMail (reconhecidamente, não tão fácil...), onde cada mudança na interface é refletida em uma mudança no URL da página.Portanto cada página é identificada pela URL atual e o usuário pode navegar simultaneamente ou usar o botão Voltar normalmente.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top