Determinar usuário do agente deslocamento de fuso horário sem o uso de javascript?
-
22-08-2019 - |
Pergunta
Existe uma maneira de determinar o fuso horário para um agente de usuário sem javasript?
Normalmente, eu iria executar esse trecho de javascript:
<script type="text/javascript" language="JavaScript">
var offset = new Date();
document.write('<input type="hidden" id="clientTzOffset"
name="clientTzOffset" value="' + offset.getTimezoneOffset() + '"/>');
</script>
No entanto, para um monte de móveis e clientes, JS é ou não foram inexistentes ou desligado. Existe algo inteligente que eu posso fazer ou estou reduzido a "me onde você está eo que timzeone você está em contar?"
Solução
Talvez com uma linguagem do lado do servidor que você poderia fazer um IP lookup, e então determinar de seu país o fuso horário eles poderiam estar em.
Eu imagino que isso poderia ser problemático, no entanto.
Se indo por este caminho, esta questão (e respostas) podem ser de ajuda.
Outras dicas
Use ambos. Tenha conjunto javascript o valor padrão de uma lista ou texto do campo. A percentagem de pessoas sem javascript é tão pequena a carga é pequena.
Eu ia dizer "usar a data do pedido: header", mas que é um cabeçalho de resposta única que parece
.pensei em outra solução, mas é um pouco complexo. Defina algumas solicitações falsa cabeça com um máximo de idade: cabeçalho 1 resposta para coagir o navegador para re-busca-los. Você deve então receber um If-Modified-Since a partir de qualquer navegador moderno como assim:
If-Modified-Since: Sat, 29 Oct 1994 19:43:31 GMT
Apenas tome cuidado para não enviar qualquer cabeçalho Last-Modified com a primeira resposta, porque
Para obter melhores resultados ao enviar um Se- Modified-Since campo de cabeçalho para a validação de cache, os clientes estão aconselhados a usar a seqüência de data exata recebido em um de último anterior Modificada campo de cabeçalho sempre que possível.
Observe o "sempre que possível" disclaimer. Este, e outras partes da descrição do cabeçalho implica que o cliente irá utilizar o seu próprio relógio quando ele não sabe nada dos servidores.
Com a combinação certa de cabeçalhos isso poderia realmente funcionar muito bem.
EDIT: Tentei alguns testes com FF mas não conseguiu encontrar uma combinação válida de cabeçalhos para disparar um If-Modified-Since no tempo cliente. FF somente envia o cabeçalho se ele tem uma última modificação cabeçalho anteriormente e, em seguida, ele apenas reflete o valor de volta (mesmo se não é uma data válida).
Eu vi um site onde, em vez de perguntar o que o fuso horário do usuário estava nele simplesmente perguntou "escolher a hora certa" e mostrou-lhes uma lista de vezes. É uma diferença sutil de "o que fuso horário você está em" mas muito mais fácil de entender. Infelizmente eu não posso encontrar o site mais