Chrome não cache os valores de campo de formulário oculto para uso na história do navegador
-
26-09-2019 - |
Pergunta
Eu tenho um formulário Web ASP.NET que contém campos de caixa de texto e campos ocultos. Os valores de campo ocultos são modificados dinamicamente usando o JavaScript do lado do cliente. Publicar o formulário, inspecionar os valores e redirecionar para outra página está funcionando como esperado.
No entanto, quando uso o botão Back do navegador para exibir a página anterior, espero, portanto, veja que todos os campos de formulário ainda são preenchidos com os valores publicados.
No IE e Firefox, esse é o caso dos campos de entrada e entrada ocultos.
No Chrome, este é apenas o caso dos campos de texto. O valor dos campos ocultos é perdido.
É verdade que o Chrome nunca se repova definido dinamicamente Valores de campo de formulário oculto ao navegar pelo histórico do navegador?
Eu coloquei uma pequena amostra para demonstrar o problema e posso prever isso, se necessário. Eu queria primeiro fazer a pergunta para ver se isso é um comportamento bem conhecido e algo que tenho que aceitar.
Solução
Você não deve confiar nesse comportamento. É diferente entre os navegadores, mesmo entre as versões do navegador. Esse comportamento não é descrito em nenhum padrão. Se você deseja que seus campos tenham valores específicos, pode usar cookies ou sempre fazer solicitações ao servidor quando a página carregar ou usar métodos mais modernos, como armazenamento local (ele não é amplamente suportado).
Outras dicas
Esse problema pode ser resolvido usando um pequeno truque.
O problema é o formulário de campos com tipo = oculto com valores definidos dinamicamente não são tratados corretamente pelo navegador Chrome.
Portanto, a solução é alterar o tipo de campo para enviar texto e usar outro método para ocultar as caixas de texto visíveis. Isso pode ser alcançado ao redor de todas as caixas de texto que transportam valores destinados a serem ocultos por um par de tags de dev e atribuindo o estilo como exibição: nenhum
Em seguida, na página, você não verá as caixas de texto carregando valores ocultos e funcionará corretamente com JavaScript do navegador.
ANTES DA
<input type=hidden name=item_no value=00001>
DEPOIS
<div style="display: none">
<input type=text name=item_no value=00001>
</div>
Não consigo comentar, talvez meu representante seja muito baixo, mas achei que isso é importante para mencionar.
Eu apenas encontrei esse problema em Ópera Então, a solução emprestada de Senah Fernando, que funcionava em torno dos campos ocultos não sendo restabelecido (obrigado Sanesh). No entanto, o que causou um problema para mim foi que o JavaScript incêndio antes que os campos do formulário sejam atualizados; portanto, se você verificar os valores com o JavaScript como eu estava fazendo, tive que adicionar um Settimeout para garantir que a Opera atualizasse antes de verificar os valores.
Os cookies são tão declarados de outra maneira, mas com a ridícula diretiva da UE sobre a exigência do contrato de uso de biscoitos do visitante, não é uma solução para mim.