Por que o javascript document.lastModified parou de funcionar e retornou a data atual?

0

Eu tenho páginas da web no Ubuntu que retornam a data lastModified como parte do texto exibido usando javascript para criar o seguinte:

Last modified: 08/28/2017

Essa é a data real da última modificação da página da web. Mas recentemente, estou recebendo a data atual em seu lugar. Eu não alterei a página. Eu verifiquei, e isso está acontecendo para cada página da web que costumava retornar corretamente lastModified. Eu tenho algumas dessas páginas no meu Macintosh, e posso convocá-las do meu 'localhost'. Eles vêm com a data lastModified adequada e eu comparei algumas páginas da web entre a versão do Ubuntu e minhas versões do Macintosh, e elas são idênticas em conteúdo, data de criação e data da última modificação.

Alguém tem uma pista do que está acontecendo? Abaixo está o JavaScript que usei para retornar apenas a parte da data, deixando a parte do tempo lastModified:

Last modified:
<script language="JavaScript">
var testlast=document.lastModified;
testlast=testlast.substr(0,10);
document.write(" "+testlast);
</script>

Do Ubuntu, isso agora produz:

Last Modified: 09/02/2018

No meu Mac, ainda está produzindo:

Last modified: 08/28/2017
    
por Dickster 03.09.2018 / 00:39

1 resposta

0

Acredito que encontrei uma solução para o problema de obter a 'última data modificada' de diferentes servidores, seja local para o navegador ou externo. O truque é combinar SSI (instruções do lado do servidor) com Javascript dentro de um documento html. Aqui está o código que posso inserir praticamente em qualquer lugar no documento:

Last modified:
<script language="JavaScript">
var tconfig = '<!--#config timefmt="%m-%d-%Y" --><!--#echo  var="LAST_MODIFIED" -->';
var testlast=document.lastModified;
var tsize=tconfig.length;
if ((tsize > 20) || (tsize < 2))
{ document.write(" "+testlast.substr(0,10)); }
else document.write(" "+tconfig);
</script><br />

Quando o servidor busca o documento, as instruções da SSI são executadas, substituindo as instruções pelo valor resultante. Assim, tconfig se torna uma string dentro de apóstrofos. Se as instruções da SSI não forem executadas, o comentário contendo as instruções será mantido, o que é uma string longa. O conjunto de variáveis tem um tamanho de string, que pode ser testado quando o JavaScript é executado no lado do cliente (navegador). Se estiver dentro de limites razoáveis, deve ser a "data da última modificação" determinada pelo servidor. Caso contrário, o JavaScript tenta determiná-lo a partir da variável 'testlast'. Ou uma sub-string de testlast é a saída, ou o valor 'tconfig' é gerado. Pior caso, você receberá a data de hoje da variável testlast do Javascript.

Estou usando este patch em todos os meus documentos onde quero que 'Last modified:' apareça. BTW, observe que eu usei o dash no código SSI e cortei o código Javascript (separador padrão). Eu posso então facilmente distinguir qual mecanismo forneceu o valor.

    
por 04.09.2018 / 22:23